標籤:擴充 返回 添加 判斷 迴圈 assign logs prevent const
n = object對象 for(var p in n){ console.log(p);// 取得是key值 console.log(n[p]);//取得是value值}
繼之前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]
js 中object對象的操作