Javascript 如何使用Object.defineProperties?
各位,我最近读了Professional.JavaScript.for.Web.Developers.3rd.Edition。这是我从中学到的代码。但是,输出与我读的书不同。当我运行下面的代码时,Javascript 如何使用Object.defineProperties?,javascript,Javascript,各位,我最近读了Professional.JavaScript.for.Web.Developers.3rd.Edition。这是我从中学到的代码。但是,输出与我读的书不同。当我运行下面的代码时,book.edition是1,book._year是2004年,book.year是2004年。怎么了?我的代码怎么了 var book = {}; Object.defineProperties(book, { _year: { value: 2004 }, edition: {
book.edition是1
,book._year
是2004年,book.year
是2004年。怎么了?我的代码怎么了
var book = {};
Object.defineProperties(book, {
_year: {
value: 2004
},
edition: {
value: 1
},
year: {
get: function() {
return this._year;
},
set: function(newValue) {
if (newValue > 2004) {
this._year = newValue;
this.edition += newValue - 2004;
}
}
}
});
book.year = 2005;
console.log(book.edition);
console.log(book._year);
console.log(book.year);
对象的属性
\u year
和edition
应定义为可写。否则,在年份设定器中重新定义它们是无用的
var-book={};
对象。定义属性(书籍{
_年份:{
价值:2004年,
可写:对
},
版本:{
价值:1,
可写:对
},
年份:{
get:function(){
今年归还;
},
set:函数(newValue){
如果(新值>2004){
本年=新值;
本版+=新价值-2004年;
}
}
}
});
控制台日志(book.edition);
console.log(book.year);
账面年=2005年;
控制台日志(book.edition);
console.log(book.year)代码>预期的行为是什么?我认为这是正确的输出book.\u year
直接获取变量,而book.year
是一个getter函数,返回\u year
,因此它们都应该返回相同的值value@Jayce444他们应该返回2005年而不是2004年,并且edition
应该是2。