Object方法速记表
** 对象方法(Object) **
方法名 | 注解 | 返回值 | js 版本 |
---|---|---|---|
Object.create(proto, [ propertiesObject ]) | 该方法使用指定的原型对象和其属性创建了一个新的对象。可理解为该方法会创建一个对象并把这个对象的 [[Prototype]]关联到指定对象。需要注意的是, Object.create(null)会创建一个拥有空(或者 null)[[Prototype]] 链的对象,这个对象无法进行委托。由于这个对象没有原型链,所以 instanceof 操作符无法进行判断,因此总是返回 false。 | Object | 5 |
Object.setPrototypeOf(obj, prototype) | 用于设置一个指定的对象的原型 ( 例如,内置的 [[Prototype]] 属性)到另一个对象或 null, 返回被设置新原型的对象。可以代替 ES5 的 Object.create | Object | 6 |
Object.getPrototypeOf(obj) | 该方法返回指定对象的原型(即内部 [[Prototype]] 属性的值)。如果没有继承属性,则返回 null 。 | * | 5 |
Object.getOwnPropertyDescriptor(obj, prop) | 返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性) | Object(Descriptor) | 5 |
Object.defineProperty(obj, prop, descriptor) | 该方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。 | Object | 5 |
Object.defineProperties(obj, props) | 该方法可以在一个对象上同时添加(定义)多个属性的属性描述符。并返回这个对象。 | Object | 5 |
Object.preventExtensions(obj) | 该方法让一个对象变的不可扩展,也就是永远不能再添加新的属性,并返回这个对象。 | Object | 5 |
Object.seal(obj) | 该方法可以让一个对象密封,并返回被密封后的对象。密封对象是指那些不能添加新的属性,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性,但可能可以修改已有属性的值的对象。 即密封之后不仅不能添加新属性, 也不能重新配置或者删除任何现有属性( 虽然可以修改属性的值)。 | Object | 5 |
Object.freeze(obj) | 该方法可以冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象。 | Object | 5 |
Object.isExtensible(obj) | 方法判断一个对象是否是可扩展的(是否可以在它上面添加新的属性) | Boolean | 5 |
Object.isSealed() | 方法判断一个对象是否被密封(sealed)。 | Boolean | 5 |
Object.isFrozen() | 方法判断一个对象是否被冻结(frozen)。 | Boolean | 5 |
Object.keys(obj) | 方法会返回一个数组,包含所有可枚举属性。不查找原型链。 | Array | 5 |
Object.values() | 方法会返回一个数组,包含所有可枚举属性值。不查找原型链。 | Array | 7 |
Object.entries() | 方法会返回一个数组,包含所有可枚举 [key,value] 对。不查找原型链。 | Array | 7 |
Object.getOwnPropertyNames(obj) | 该方法会返回一个数组,包含所有属性,无论它们是否可枚举。不查找原型链。 | Array | 5 |
Object.getOwnPropertySymbols() | 返回一个数组,包含对象自身的所有 Symbol 属性(符号属性)。Object 的方法中只有此方法能遍历自身 Symbol 属性。另外一个能遍历对象 Symbol 属性的方法是 Reflect.ownKeys(obj),Reflect.ownKeys 返回一个数组,包含对象自身的所有属性,不管是属性名是 Symbol 或字符串,也不管是否可枚举。 | Array | 6 |
Object.assign(target, …source) | 该方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)注意: Object.assign 方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。 Object.assign 会跳过那些值为 null 或 undefined 的源对象 | Object | 6 |
Object.is(value1, value2) | 该方法用来确定两个值是否是相同的值。Object.is()会在下面这些情况下认为两个值是相同的: 两个值都是 undefined、 两个值都是 null、 两个值都是 true 或者都是 false、 两个值是由相同个数的字符按照相同的顺序组成的字符串 、两个值指向同一个对象、 两个值都是数字并且都是正零 +0 或者都是负零 -0 、都是 NaN、 都是除零和 NaN 外的其它同一个数字。 == 运算符会对它两边的操作数做隐式的类型转换,Object.is 不会做类型转换,严格相等运算符 === 也不会对操作数进行类型转换,但是它会把 -0 和 +0 这两个数值视为相同的,还会把两个 NaN 看成是不相等的。 | Boolean | 6 |
** 对象实例方法(object) **
方法名 | 注解 |
---|