關於對象的數據屬性

javascript中對象是經常用到的東西,今天我來寫一些對於創建對象時,定義屬性時的一些特徵值。

這些特徵值不能直接訪問,下面舉例說明。

var a={

    'name':'kasol',

    'age':18,

    'hobby':'ES'

};

在定義了這個對象之後,該對象上有一個name屬性,以這樣的方式被創建時,name屬性上有4個特徵值,分別是

[[Configurable]] ,[[Writable]] ,[[Enumerable]],  [[Value]].

[[Configurable]]表示能否配置,即能否通過delete來刪除某一個屬性,或者能否修改屬性的特性,或者修改爲訪問器屬性,如果爲false,那麼非嚴格模式下進行上述操作則不會有效果,嚴格模式下則會報錯。

[[Writable]]表示能否修改屬性的值,如果此項爲false,那麼a.name='moon'不會有效果。

[[Enumerable]]表示能否被for  in 循環枚舉出來,如果此項爲false,for  in 循環下不會把此屬性輸出。

[[Value]]表示該屬性的值,讀操作從這裏讀,寫操作也會覆蓋該項,默認值爲undefined。

想要修改某個對象的屬性的特徵值,要用Object.defineProperty(obj,property,descriptor);

比如Object.defineProperty(a,'name',{writable:false,value:'moon'});

第一個參數是要更改的目標對象,第二個是要更改的屬性,第三個是描述符,是一個特徵值的對象。

有一點要注意,假如使用了該方法將Configurable設爲false以後,就不能再對除了writable之外的特徵值進行更改了,即使是Configurable=true也不行




發佈了43 篇原創文章 · 獲贊 18 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章