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