var person=new Object();
person.name="Nicholas";
person.age=29;
person.sayName=function(){
alert(this.name);
}
上面创建了一个person属性对象,他的name属性有四种特性。
[[Configurable]] 能否删除修改这个name属性
[[Enumerable]] 表示能否通过 for-in 循环返回属性
[[Writable]]
表示能否修改name属性的值
[[Value]] 包含这个属性的数据值。读取属性值的时候,从这个位置读;写入属性值的时候,
把新值保存在这个位置。这个特性的默认值为 undefined 。
1、 Object.defineProperty() 要想修改属性的特性,使用这个方法
这个方法接收三个参数:属性所在的对象、属性的名字和一个描述符对象。
var person={};
Object.defineProperty(person,name,{
writable:false,
value:"Nicholas"
})
2、访问器属性
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、定义多个属性特性 Object.defineProperties()
Object.defineProperties(girl,{
name:{
writable: false
},
age:{
writable: true,
value: 22
}
});