理解prototype和__proto__
-
只有函数对象具有
prototype
这个属性 -
prototype
和__proto__
都是js在定义一个对象时的预定义属性 -
prototype
被实例的__proto__
指向 -
__proto__
指向构造函数的prototype
方法
Object.prototype.toString() 返回对象的字符串表示
Object.prototype.hasOwnProperty() 返回一个布尔值,表示某个对象是否含有指定的属性,而且此属性非原型链继承,也就是说不会检查原型链上的属性
Object.prototype.isPrototypeOf() 返回一个布尔值,表示指定的对象是否在本对象的原型链中
Object.prototype.propertyIsEnumerable() 判断指定属性是否可枚举
Object.prototype.watch() 给对象的某个属性增加监听
Object.prototype.unwatch() 移除对象某个属性的监听
Object.prototype.valueOf() 返回指定对象的原始值
获取和设置属性
Object.defineProperty 定义单个属性
Object.defineProperties 定义多个属性
Object.getOwnPropertyDescriptor 获取属性
Object.assign() 拷贝可枚举属性 (ES6新增)
Object.create() 创建对象
Object.entries() 返回一个包含由给定对象所有可枚举属性的属性名和属性值组成的 [属性名,属性值] 键值对的数组,数组中键值对的排列顺序和使用for…in循环遍历该对象时返回的顺序一致
Object.freeze() 冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象
Object.getOwnPropertyNames() 返回指定对象的属性名组成的数组
Object.getPrototypeOf 返回该对象的原型
Object.is(value1, value2) 判断两个值是否是同一个值 (ES6 新增)
Object.keys() 返回一个由给定对象的所有可枚举自身属性的属性名组成的数组,数组中属性名的排列顺序和使用for-in循环遍历该对象时返回的顺序一致
Object.setPrototypeOf(obj, prototype) 将一个指定的对象的原型设置为另一个对象或者null
Object.values 返回一个包含指定对象所有的可枚举属性值的数组,数组中的值顺序和使用for…in循环遍历的顺序一样