js中Object物件常用方法和屬性
一、屬性
Object自帶一個prototype的屬性,即Object.prototype,Object.prototype本身也是一個物件,也會有一些屬性和方法。如下:
1、屬性
Object.prototype.writable:預設為false
Object.prototype.enumerable:預設為false
Object.prototype.configurable:預設為false
Object.prototype.constructor:用於建立一個物件的原型。
2、常用方法
Object.prototype.hasOwnProperty():返回一個布林值,表示某個物件是否含有指定的屬性,而且此屬性非原型鏈繼承。
Object.prototype.isPrototypeOf():返回一個布林值,表示指定的物件是否在本物件的原型鏈中。
Object.prototype.propertyIsEnumerable():判斷指定屬性是否可列舉。
Object.prototype.toString():返回物件的字串表示。
Object.prototype.watch():給物件的某個屬性增加監聽。
Object.prototype.unwatch():移除物件某個屬性的監聽。
Object.prototype.valueOf():返回指定物件的原始值。
二、方法
Object.assign(target, …sources):把任意多個的源物件自身的可列舉屬性拷貝給目標物件,然後返回目標物件。
Object.create(proto,[propertiesobject]):建立一個擁有指定原型和若干個指定屬性的物件。
Object.defineProperties(obj, props):在一個物件上新增或修改一個或者多個自有屬性,並返回該物件。
Object.defineProperty(obj, prop, descriptor):直接在一個物件上定義一個新屬性,或者修改一個已經存在的屬性, 並返回這個物件。obj:需要定義屬性的物件。prop:需定義或修改的屬性的名字。descriptor:將被定義或修改的屬性的描述符。
Object.entries(obj):返回一個包含由給定物件所有可列舉屬性的屬性名和屬性值組成的 [屬性名,屬性值] 鍵值對的陣列,陣列中鍵值對的排列順序和使用for…in迴圈遍歷該物件時返回的順序一致。
舉例: var obj = { foo: “bar”, baz: 42 }; console.log(Object.entries(obj)); // [ [‘foo’, ‘bar’], [‘baz’, 42] ]
Object.freeze(obj):凍結一個物件,凍結指的是不能向這個物件新增新的屬性,不能修改其已有屬性的值,不能刪除已有屬性,以及不能修改該物件已有屬性的可列舉性、可配置性、可寫性。也就是說,這個物件永遠是不可變的。該方法返回被凍結的物件。
Object.getOwnPropertyDescriptor(obj, prop):返回指定物件上一個自有屬性對應的屬性描述符。
Object.getOwnPropertyNames(obj):返回一個由指定物件的所有自身屬性的屬性名(包括不可列舉屬性)組成的陣列。
舉例: // 類陣列物件 var obj = { 0: “a”, 1: “b”, 2: “c”}; console.log(Object.getOwnPropertyNames(obj).sort()); // [“0”, “1”, “2”]
Object.getPrototypeOf(object):返回該物件的原型。
Object.is(value1, value2):判斷兩個值是否是同一個值。
Object.isExtensible(obj):判斷一個物件是否是可擴充套件的(是否可以在它上面新增新的屬性)。
Object.isFrozen(obj):判斷一個物件是否被凍結(frozen)。
Object.isSealed(obj):判斷一個物件是否是密封的(sealed)。密封物件是指那些不可 擴充套件 的,且所有自身屬性都不可配置的(non-configurable)且屬性不可刪除的物件(其可以是可寫的)。
Object.keys(obj):返回一個由給定物件的所有可列舉自身屬性的屬性名組成的陣列,陣列中屬性名的排列順序和使用for-in迴圈遍歷該物件時返回的順序一致
舉例: var arr = [“a”, “b”, “c”]; alert(Object.keys(arr)); // 彈出”0,1,2” // 類陣列物件 var obj = { 0 : “a”, 1 : “b”, 2 : “c”}; alert(Object.keys(obj)); // 彈出”0,1,2”
Object.preventExtensions(obj):讓一個物件變的不可擴充套件,也就是永遠不能再新增新的屬性。
Object.setPrototypeOf(obj, prototype):將一個指定的物件的原型設定為另一個物件或者null
Object.values(obj):返回一個包含指定物件所有的可列舉屬性值的陣列,陣列中的值順序和使用for…in迴圈遍歷的順序一樣。
舉例: var obj = { foo: “bar”, baz: 42 }; console.log(Object.values(obj)); // [‘bar’, 42]