物件導向中Object常用屬性總結

小周sri的碼農發表於2017-09-19

學完Object屬性,自己總結一些常用是Object常用屬性。

Object.prototype:屬性表示Object的原型物件。

屬性:

Object.prototype.constructor:特定的函式,使用者建立一個物件的原型。

Object.prototype.__proto__:指向當物件被實列化的時候,用作原型的物件

Object.prototype.__noSuchMethod__當未定義的物件成員被呼叫作方法的時候,允許定義並執行的函式。

方法:

Object.prototype.hasOwnProperty():返回一個布林值,表示某個物件是否含有指定的屬性,而且此屬性非原型連結繼承的。
語法:obj.hasOwnProperty(prop)
prop:要檢測的屬性 字串 名稱或者Symbol
返回值:用來判斷某個物件是否含有指定的屬性的Boolean

Object.prototype.isPrototypeOf():返回一個布林值,表示指定的物件是否在本物件的原型鏈中。
語法:prototypeObj.isPrototypeOf(object)
object:在該物件的原型鏈上搜尋
返回值:Boolean,表示呼叫物件時是否在另一個物件的原型鏈上。


Object.prototype.propertyIsEnumerable():判斷指定的屬性是否可列舉,內部屬性設定 ECMAScript DontEnum attribute 。
語法:Obj.propertyIsEnumerable(P):需要檢測的屬性名

Object.prototype.toSource():返回字串表示此物件的原始碼形式,可以使用此字串生成一個相同的物件。
語法:Object.toSource();obj.toSource();
返回值:一個表示物件的原始碼的字串

Object.prototype.toLcaleString():直接呼叫toSource()方法。 方法返回一個該物件的字串表示,該方法主要用於被本地化 相關物件覆蓋
語法L:Object.toLocaleString();

Object.prototype.toString():返回物件字串表示。
返回值:一個表示物件的字串。

Object.prototype.unwatch():移除物件某個屬性的監聽。

Object.prototype.valueOf():返回指定物件的原始值。
語法:Object.valueOf();
返回值:返回值為該物件的原始值

Object.prototype.watch():給物件某個屬性增加監聽。

****************************************************************************************************************************************************

Object.prototype.__proto__屬性是一個訪問器屬性(一個getter函式和一個setter函式),暴露了通過塔訪問的物件的內部[Prototype] (一個物件或null).
__proto__屬性也可以在物件文字定義中使用物件[[Prototype]]來建立,作為Object.create()的一個替代。

Object.assign():方法用於將所有可列舉的屬性的值從一個或多個源物件複製到目標物件,它將返回目標物件。
描述:如果目標物件中的屬性 有相同的鍵,則屬性將被源中的屬性覆蓋,後來的屬性將類似地覆蓋早先的屬性。

Object.create():方法會使用指定的原型物件及其屬性去建立一個新的物件。
返回值:返回一個新物件,在指定原型物件上新增新屬性後的新物件。
語法:Object.create(proto,[propertiesObject])
proto:一個物件,應該是新建立的物件原型。
[propertiesObject]:可選,該引數是一組屬性與值,該物件的屬性名稱將是建立的物件的屬性名稱,值是屬性描述符。

Object.defineProperties():方法直接在一個物件上定義新的屬性或修改現有的屬性,並返回該物件。
語法:Object.defineProperties(obj,props)
obj:將要被新增或修改屬性的物件。
props:該 物件的一個或多個鍵值對定義了將要為物件或修改的屬性的具體配置。

Object.defineProperty():方法直接會在一個物件上定義一個新屬性,或者人修改一個物件的現有屬性,並返回這個物件。
語法:Object.defineProperty(obj,prop,descriptor)
obj:需要被操作的目標物件。
prop:目標物件需要定義或修改屬性的名稱。
descriptor:被傳遞給函式的物件。

Object.entries():方法返回一個給定物件自己的可列舉屬性[key,value]對的陣列,陣列中鍵值對的排列順序和使用 for-in 迴圈遍歷該物件返回的順序一致。
語法:Object.entries(obj)
obj:返回該物件由可列舉屬性名和對應屬性值組成的鍵值對。

Object.freeze():方法可以凍結一個物件,凍結指的是不能向這個物件新增新的事件,不能修改其已有的屬性,不能刪已有的屬性,以及不能修改該物件已有屬性的可列舉,可配置性,可寫性。也就是說,這個物件永遠是不可變的。該方法返回被凍結的物件。
語法:Object.freeze(obj)
obj:將要被凍結的物件

Object.getOwnPropertyDescriptor():方法返回指定物件上有一個自有屬性對應的屬性描述符(自有屬性值的是直接 賦予該物件的屬性,不需要從原型鏈上進行查詢的屬性)。
語法:Object.getOwnPropertyDescriptor(obj,prop)
obj:需要查詢的目標物件
prop:目標物件內屬性名稱(String型別)
返回值:如果指定的屬性存在於物件上,則返回其屬性描述符物件(property,descriptor),否則返回undefined。


Object.getOwnPropertyDescriptor():方法用來獲取一個物件的所有自身屬性的描述符。
語法:Object.getOwnPropertyDescriptor(obj)
obj:任意物件
返回值:所指定的所有自身屬性的描述符,如果沒有任何自身屬性,則返回空物件。

+
Object.getOwnPropertyNames():方法返回一個由指定物件的所有自身屬性名(包括不可列舉屬性但不包括Symbo值作為名稱的屬性)組成的陣列。
語法:Object.getOwnPropertyNames(obj)
obj:一個物件,其自身的可列舉和不可列舉屬性的名稱被返回。
返回值:在給定物件上找到的屬性對應的字串陣列。


Object.getOwnPropertySymbols():方法返回一個陣列,該陣列包含了指定物件自身的(非繼承的)所有symbol屬性鍵。
語法:Object.getOwnPropertySymbols(obj)
obj:任意一個物件


Object.getPrototypeOf():方法返回指定物件的原型(即,內部[ [Prototype]]屬性的值)。
語法:Object.getPrototypeOf(obj)
obj:要返回其原型的物件
返回值:給定物件的原型。如果沒有繼承屬性,則返回null。


Object.is():方法是確定兩個值是否相同的值
語法:Object.is(value1,value2)
value1:需要比較的第一個值
value2:需要比較的第二個值
返回值:一個布林值指示引數是否相同的。

Object.isExtensible():方法判斷一個物件是否是可擴充套件的(是否可以在它上面新增新的屬性)。
語法:Object.isExtensible(obj)
obj:需要檢測的物件

Object.isFrozen():方法判斷一個物件是否被凍結frozen。
語法:Object.isFrozen(obj)
obj:要被檢測的物件

Object.isSealed():方法判斷一個物件是否被密封(sealed).
語法:Object.isSealed(obj)
obj:將要檢測的物件
描述:如果這個物件是密封的,則返回true,否則返回false。密封物件是指那些不可擴充套件的,且所有自身屬性都不可配置的(non-configurable)且屬性不可刪除的物件(其可以是可寫的)。

Object
.keys():方法會返回一個由一個給定物件的自身可,列舉屬性組成的陣列,陣列中屬性名是排序順序和使用for-in迴圈遍歷該物件返回的順序一致(兩者的主要區別是一個for-in迴圈還會列舉其原型鏈上的屬性)。
語法:Object
.keys(obj)
obj:要返回其列舉自身屬性的物件
返回值:一個表示給定物件的所有可列舉屬性的字串陣列。

Object.preventExtensions():方法讓一個物件變的不可擴充套件,也就是永遠不能再新增新的屬性。
語法:Object.preventExtensions(obj)
obj:將要變的不可擴充套件的物件

Object.seal():方法可以讓一個物件密封,並返回密封后的物件。密封物件將會阻止向物件新增新的屬性,並且會將 所有已有屬性的可配置屬性(coonfigurable)置為不可配置(false),即不可修改屬性的描述或刪除屬性 ,但是可寫性描述(writable)為可寫(true)的屬性的值仍然被 修改。
語法:Object.seal(obj)
obj:將要被密封的物件

Object.setPrototypeOf():方法設定一個指定的物件的原型,(即內部[ [Prototype]]屬性)到另一個物件或null。
語法:Object.setPrototypeOf(obj,prototype)
obj:要設定其原型的物件
prototype:該物件的新原型(一個物件或null)。

Object.values():方法返回一個給定物件自己的所有可列舉屬性值的陣列,值的順序與使用for-in迴圈的順序相同(區別在於for-in迴圈列舉原型鏈中的屬性)。
語法:Object.values(obj)
obj:被返回可列舉屬性值的物件。
返回值:一個包含物件自身的所有可列舉屬性鍵值的陣列

相關文章