面向對象中Object常用屬性總結
- 2019 年 10 月 6 日
- 筆記
學完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:被返回可枚舉屬性值的對象。 返回值:一個包含對象自身的所有可枚舉屬性鍵值的數組