level 4
chenqz0826
楼主
今天学到访问器属性这个东东,我写了如下程序:
var book={
_year:2019,
edition:1
};
Object.defineProperty(book,"year",{
get: function(){
return this._year;
},
set: function(newValue){
this._year=newValue;
this.edition+=newValue-2019;
}
});
book.year=2022;
//显示当前各属性值
document.write("_year属性:"+book._year+"<br>");
document.write("属性个数:"+book.year+"<br>");
document.write("edit属性:"+book.edition+"<br>");
//当前book属性个数和属性名称
document.write(Object.getOwnPropertyNames(book).length+"<br>")
document.write(Object.keys(book).)
结果输出:
_year属性:2022
newyear属性:2022
edit属性:4
3
_year,edition
请看一下,book一开始是两个属性,程序中我用defineProperty新定义了一个newyear属生,并列出了运行后的book的属性的值,明明现在是三个属性,且值都正确。但看一下最后两句,我想看看当前的book对象的属性是哪些,一个返回有3个,另一个(keys)只枚举出两个,这是怎么回事?这两个统计函数不一样吗?请大侠指点。。
2022年02月23日 03点02分
1
var book={
_year:2019,
edition:1
};
Object.defineProperty(book,"year",{
get: function(){
return this._year;
},
set: function(newValue){
this._year=newValue;
this.edition+=newValue-2019;
}
});
book.year=2022;
//显示当前各属性值
document.write("_year属性:"+book._year+"<br>");
document.write("属性个数:"+book.year+"<br>");
document.write("edit属性:"+book.edition+"<br>");
//当前book属性个数和属性名称
document.write(Object.getOwnPropertyNames(book).length+"<br>")
document.write(Object.keys(book).)
结果输出:
_year属性:2022
newyear属性:2022
edit属性:4
3
_year,edition
请看一下,book一开始是两个属性,程序中我用defineProperty新定义了一个newyear属生,并列出了运行后的book的属性的值,明明现在是三个属性,且值都正确。但看一下最后两句,我想看看当前的book对象的属性是哪些,一个返回有3个,另一个(keys)只枚举出两个,这是怎么回事?这两个统计函数不一样吗?请大侠指点。。