1.属性的特性
[[Writable]]可写的
[[Configurable]]可删除的
[[Value]]值
[[Enumerable]]能否通过for-in返回这个属性
person={name:"Alice"};
Object.defineProperty(person,"name",{
writable:false,
value:"Olamdo"
};
alert(person.name);
person.name="George";//报错
2.属性的访问器特性
包括get和set,常用于更新对象的一个属性时同时更新另一个属性。
注意:get和set要同时写,否则会把属性变成只能读取不能修改或者只能修改不能读取。
var book={_year:2004,edition:1};
Object.defineProperty(book,"year",{
get:function(){
return this._year;
},
set:function(newValue){
if(newValue>2004){
this._year=newValue;
this.edition+=newValue-2004;
}
}
});
book.year=2005;
alert(book.edition);//2
3.获取属性的特性
var book={edition:1};
var des=Object.getOwnPropertyDescriptor(book,"edition");
alert(des.configurable);//false
alert(typeof des.get);//undefined