javascript內置屬性

定義只有內部才用的特性,描述了屬性的各類特徵,表示特性是內部的值,放在[[ ]]中
數據屬性和訪問器屬性函數

數據屬性

[[Configurable]]:可否經過delete刪除屬性從而從新定義屬性,可否修改屬性的特性,或者可否把屬性修改成訪問器屬性(默認爲true)
[[Enumerable]]:可否經過for-in循環返回屬性(默認值是true)
[[Writable]]:可否修改屬性的值(默認值是true)
[[Value]]:包含這個屬性的數據值。讀和寫(默認值是undefined)spa

Object.defineProperty(obj,proName,修飾符對象)修改數據屬性code

修飾符對象的屬性:configurable,enumerable,writable和value對象

在調用Object.defineProperty(obj,proName,修飾符對象),不過不指定修飾符的值,默認是falseip


訪問器屬性

[[Configurable]]:可否經過delete刪除屬性從而從新定義屬性,可否修改屬性的特性,或者可否把屬性修改成訪問器屬性(默認爲true)
[[Enumerable]]:可否經過for-in循環返回屬性(默認值是true)
[[Get]]:在讀取屬性時候調用該函數,(默認值是undefined)
[[Set]]:在寫入屬性時候調用該函數,(默認值是undefined)get

clipboard.png

clipboard.png

var o = {a:1,b:2};
o.c = 3;
Object.defineProperty(o,"d",{
   value:4,enumerable:false
});
//for in 不能夠得到enumerable爲false的屬性
//Object.keys(o)不能夠得到enumerable爲false的屬性
//JSON.stringify(o)不能夠得到enumerable爲false的屬性
//Object.getOwnPropertyNames(o) 能夠得到enumerable爲false的屬性
//ES6中:Reflect.getOwnPropertyNames(o)  能夠得到enumerable爲false的屬性

總結:

clipboard.png

相關文章
相關標籤/搜索