定义只有内部才用的特性,描述了属性的各类特征,表示特性是内部的值,放在[[ ]]中
数据属性和访问器属性函数
[[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的属性