let book = {};
Object.defineProperties(book, {
year_: {
value: 2017
},
edition: {
value: 1
},
year: {
get() {
return this.year_;
},
set(newValue) {
if (newValue > 2017) {
this.year_ = newValue;
this.edition += newValue - 2017;
}
}
}
});
book.year_=2018;
console.log(book.year_);
console.log(book.edition);
book.year的输出竟然是2017?
原因:object.defineproperties默认的writeable是false,就是不能改变它的值, year_的value后面加个writeable:true就可以了