JavaScript物件屬性的特性

2021-09-14 05:48:07 字數 1284 閱讀 2933

除了包含名字和值之外,屬性還包含的一些標識它們可寫、可列舉和可配置的特性。資料屬性的4個特性分別是它的值(value)、可寫性(writable)、可列舉性(enumerable)和可配置性(configurable)。訪問器屬性的4個特性是讀取(get)、寫入(set)、可列舉性和可配置性。

ecmascript中有乙個名為「屬性描述符」(property descriptor)的物件,這個物件代表那4個特性。描述符物件的屬性和他們所描述符的屬性特性是同名的。因此資料屬性的描述符物件有value、writable、enumerable和configurable。訪問器屬性的描述符物件則用get屬性和set屬性代替value和writable。其中writable、enumerable和configurable是布林值,get屬性和set屬性是函式值。

通過呼叫object.getownpropertydescriptor()可以獲得某個物件特定屬性的描述符:

object.getownpropertydescriptor(,"x");

//

object.getownpropertydescriptor()只能得到自有屬性的描述符。

要想設定屬性的特性,或者想讓新建屬性具有某種特性,則需要呼叫object.defineproperty(),傳入要修改的物件,要建立或要修改的屬性,以及屬性描述符物件。

var o = {};

// 新增乙個不可列舉的資料屬性x,並賦值為1

object.defineproperty(o, "x", );

傳入object.defineproperty()的屬性描述符物件不必包含4個特性。對於新建立的屬性來說,預設的特性值是false或undefined。對於修改的已有屬性來說,預設的特性值沒有做任何修改。這個方法要麼修改已有屬性要麼新建自有屬性,但不能修改繼承屬性。

如果要同時修改或建立多個屬性,則需要使用object.defineproperties()。第乙個引數是要修改的物件,第二個引數是乙個對映表,它包含要新建或修改的屬性的名稱,以及它們的屬性描述符,例如:

var p = object.defineproperties(

x: ,

y:,r: ,

enumerable:false,

configurable: true

}});

用object.defineproperty()與object.defineproperties()操作物件屬性的特性也是要遵循一定的規則的。任何違反規則的使用會丟擲型別錯誤異常。下面是完整的規則:

Javascript 物件的三屬性

先定義物件 function person name,age this.setname function name this.setage function age var person new person xiao 21 function chinese chinese.prototype pe...

Javascript 遍歷物件的屬性

我們可以用 for in 來遍歷物件的屬性。function computer brand,price var mycomputer new computer acer 500 for var prop in mycomputer 上面的 中,computer有兩個屬性,brand 和 price....

JavaScript 物件陣列排序 物件屬性

1.陣列排序 從小到大 function sortby a,b arr.sort sortby 2.物件陣列排序 按照陣列物件中某個屬性值進行排序 var arrobj function compare key arrobj.sort compare age 根據age排序 如果還需要在 age 的...