一 定义多个属性
ECMAScript5 定义了一个Object.defineProperties()方法,用于定义多个属性。此方法接受两个对象参数:
第一个对象:要添加或修改其属性的对象
第二个对象的属性与第一个对象的要添加或修改的属性一一对应 :
例如:
var book ={};
Object.defineProperties(book,{
_year:{
writable:true,
value :2004
},
edition:{
writable:true,
value :1
},
year : {
get :function(){
return this._year;
},
set :function(value){
if(value > 2004){
this._year = value;
this.edition += value -2004
}
}
}
});
支持Object.defineProperties()方法的浏览器有IE9+ Firefox+ Safari5+,Opera12+ 和 Chrome;
二 读取属性的特性
ECMAScript5方法:Object.getOwnPropertyDescriptor()方法,可以取得给定属性的描述符,接受两个参数(属性所在对象 、 要读取其描述符的属性名称)
var book ={};
Object.defineProperties(book,{
_year:{
value :2004
},
edition:{
value :1
},
year : {
get :function(){
return this._year;
},
set :function(value){
if(value > 2004){
this._year = value;
this.edition += value -2004
}
}
}
});
//数据属性
var descirptor = Object.getOwnPropertyDescirptor(book,"_year");
alert(descirptor.value);//
alert(descriptor.configurable);//false
alert(typeof descriptor.get); // "undefined"
//访问属性
var descirptor = Object.getOwnPropertyDescirptor(book,"year");
alert(descirptor.value);//
alert(descriptor.configurable);//false
alert(typeof descriptor.get); // "function"
支持Object.getOwnPropertyDescriptor()方法的浏览器有IE9+ Firefox+ Safari5+,Opera12+ 和 Chrome;