又有個細節讓我迷糊了一會兒。屬性的特性裡只有 writable,configurable,value,enumerable(對於資料而言),看到可擴充套件/不可擴充套件的時候就有點蒙了,也沒看到extendable一類的特性啊。然後才發現可擴充套件性是針對物件,而不是屬性的。
另外如果configurable是false,仍然可以把writable從true設定到false(但是不能再設定成true)。←隔幾個月回頭再看到這個點的時候,還是會覺得怪怪的。哎。
還有關於object.getownpropertynames和object.keys的區別,查了一下,它們同樣都能返回本物件自有的屬性--不包括原型鏈上的屬性。然而不同在於前者能返回不可列舉的屬性,而後者不可以,測試了一下,也確實如此。在測試中我也發現,getownpropertydescriptor所返回的用來描述屬性的物件,似乎是新生成的乙個物件。它並不是在動態地關聯原屬性,換句話說,修改這個物件並不能影響原屬性的特性。想修改還是得用object.defineproperty啊。←不過這某種意義上也挺方便的,想搞個什麼深拷貝去複製屬性特性的話就不用遞迴來複製這個descriptor了。
JavaScript物件屬性的特性
除了包含名字和值之外,屬性還包含的一些標識它們可寫 可列舉和可配置的特性。資料屬性的4個特性分別是它的值 value 可寫性 writable 可列舉性 enumerable 和可配置性 configurable 訪問器屬性的4個特性是讀取 get 寫入 set 可列舉性和可配置性。ecmascri...
物件屬性特性記錄
聽課微專業聽到了一嘴物件屬性可列舉之類的。以前看js高階程式設計,都是匆匆看過去了。我覺得我不能再把不懂的留到明天,總是記得這裡沒有太清楚。給自己留乙個坑。所以記錄一下 物件屬性有四種 vaule,writable configurable enumerable,還有get和set屬性。字面量 指的...
js 中物件屬性的特性
資料屬性 資料屬性包含乙個資料值的位置,在這個位置可以讀取和寫入值。4個描述的行為特性 writable 表示能否修改屬性的值。預設為true enumerable 表示能否過過for in迴圈返回屬性是否可以列舉。configuralbe 表示是否能過來delete刪除屬性從來重新定義屬性,能否修...