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