物件屬性描述符

2021-09-29 20:35:45 字數 936 閱讀 6831

從 es5 開始,物件的屬性都具備了屬性的描述符,它能設定屬性的特性。我們可以使用 object.defineproperty(…) 來新增或者配置乙個屬性並對它的特性進行配置。屬性有: writable、 enumerable 和 configurable 這三個或之一都為屬性描述符。

一. writable (可寫)

var obj =

;object.

defineproperty

(obj,

"a",

)obj.a =48;

obj.a;

// 24

二. enumberable (可列舉)
var obj =

;object.

defineproperty

(obj,

"c",

)for

(var prop in obj)

// a

// b

三. configurable (可配置)
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...