從 es5 開始,物件的屬性都具備了屬性的描述符,它能設定屬性的特性。我們可以使用 object.defineproperty(…) 來新增或者配置乙個屬性並對它的特性進行配置。屬性有: writable、 enumerable 和 configurable 這三個或之一都為屬性描述符。
一. writable (可寫)
二. enumberable (可列舉)var obj =
;object.
defineproperty
(obj,
"a",
)obj.a =48;
obj.a;
// 24
三. configurable (可配置)var obj =
;object.
defineproperty
(obj,
"c",
)for
(var prop in obj)
// a
// b
可以看到,如果是不可配置的,那麼後面的配置操作將會報錯,所以如果配置乙個不可配置的屬性,那麼這個操作只能實現一次。以下是補充:var obj =
object.
defineproperty
(obj,
'a',);
object.
defineproperty
(obj,
'a',
)// typeerror cannot redefine property: a at function.defineproperty
即便是不可配置,仍然可以把 writable 由 true 配置 為 false,反過來則不行。
如果配置的是不可配置,那麼使用 delete obj.a 是無效的,不能刪除屬性 a,因為不可配置,嚴格模式下會報錯。
屬性描述符
在es5開始,所有屬性都具備了屬性描述符。我們可以通過object.getownpropertydescriptor來觀察到屬性的描述符,它是長這樣子的。object.getownpropertydescriptor a writable決定該屬性是否唯讀。enumerable決定該屬性是否可列舉。...
屬性描述符
property descriptor 屬性描述符 是乙個普通物件,用於描述乙個屬性的相關資訊 通過object.getownpropertydescriptor 物件,屬性名 可以得到乙個物件的某個屬性的屬性描述符 object.getownpropertydescriptors 物件 可以得到某...
Object 屬性描述符
屬性描述符是乙個普通的物件中用來描述屬性的相關資訊。object.getownpropertydescriptor 返回指定屬性描述符 返回物件的key屬性的屬性描述 屬性描述 value 屬性值configurable 該屬性是否可以被屬性描述符修改 enumerable 是否可以列舉 writa...