Object 构造函数的方法
1、Object.assign(target, source, ?...source)
target: 目标对象
source: 来源对象(可多个)
通过复制一个或多个对象来创建一个新的对象。
可以发现,该方法直接作用于目标对象,属性及值更新成了源对象的属性及值。
2、Object.create(o, ?properties)
o: 对象的原型对象
properties: 值的属性
使用指定的原型对象和属性创建一个新对象。
aa 继承了 a
追加了个 age 属性,值是 'b'
注:对象属性
3、Object.defineProperty(o, prototypeKey, attributes)
o: 目标对象
prototypeKey: 属性名
attributes: 用于要描述该属性的属性配置
给对象添加一个属性并指定该属性的配置。
这里给 空对象 a 一个 name 属性,且赋值为 'a',同时不可写,这样后面的 a.name 赋值则不会成功~
4、Object.defineProperties(o, properties)
o: 目标对象
properties: 多个描述属性的属性配置
给对象添加多个属性并分别指定它们的配置。
相当于可以批量添加对象属性
5、Object.entries(o)
o: 目标对象
返回给定对象自身可枚举属性的 [key, value]
数组。
6、Object.freeze(o)
o: 目标对象
冻结对象:其他代码不能删除或更改任何属性。
啥都不能动,只能看着
7、Object.getOwnPropertyDescriptor(o, propertyKey)
o: 目标对象
propertyKey: 属性名
返回对象指定的属性配置。
8、Object.getOwnPropertyNames(o)
o: 目标对象
返回一个数组,它包含了指定对象所有的可枚举或不可枚举的属性名。
只含字符串属性
9、Object.getOwnPropertySymbols(o)
o: 目标对象
返回一个数组,它包含了指定对象自身所有的符号属性。
因为所有的对象在初始化的时候不会包含任何的 Symbol,除非你在对象上赋值了 Symbol 否则Object.getOwnPropertySymbols()
只会返回一个空的数组。
10、Object.getPrototypeOf(o)
o: 目标对象
返回指定对象的原型对象。
11、Object.is(value1, value2)
value1、value2: 要比较的2个值
比较两个值是否相同。所有 NaN 值都相等(这与==和===不同)。
同时要注意
12、Object.isExtensible(o)
o: 目标对象
判断对象是否可扩展。
默认情况下,对象是可扩展的:即可以为他们添加新的属性。以及它们的 __proto__
属性可以被更改。
Object.preventExtensions
,Object.seal
或 Object.freeze
方法都可以标记一个对象为不可扩展(non-extensible)
13、Object.isFrozen(o)
o: 目标对象
判断对象是否已经冻结。
14、Object.isSealed(o)
o: 目标对象
判断对象是否已经密封。
如果这个对象是密封的,则返回 true
,否则返回 false
。密封对象是指那些不可 扩展
的,且所有自身属性都不可配置且因此不可删除(但不一定是不可写)的对象。
15、Object.keys()
返回一个包含所有给定对象自身可枚举属性名称的数组。
16、Object.preventExtensions(o)
o: 目标对象
防止对象的任何扩展。
仅阻止添加自身的属性。但其对象类型的原型依然可以添加新的属性。
17、Object.seal(o)
o: 目标对象
防止其他代码删除对象的属性。
密封一个对象会让这个对象变的不能添加新属性,且所有已有属性会变的不可配置。属性不可配置的效果就是属性变的不可删除,以及一个数据属性不能被重新定义成为访问器属性,或者反之。但属性的值仍然可以修改。
18、Object.setPrototypeOf(o, prototype)
o: 目标对象
prototype: 要继承的新原型
设置对象的原型(即内部 [[Prototype]]
属性)。
19、Object.values(o)
o: 目标对象
返回给定对象自身可枚举值的数组。
source: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object