[英]Why doesn't this objects variable expression work?
有人可以解释为什么hotel.availableRooms是NaN吗? 我正在尝试学习JavaScript中的对象。 谢谢!
var hotel = { name: 'The Shining', totalRooms: 238, bookedRooms: 0, availableRooms: this.totalRooms - this.bookedRooms, roomTypes: ['single', 'double', 'haunted'], bookRoom: function() { this.availableRooms -= 1; this.bookedRooms += 1; } }; hotel.bookRoom(); console.log(hotel.totalRooms); console.log(hotel.bookedRooms); console.log(hotel.availableRooms);
当表达式expressionRooms availableRooms: this.totalRooms - this.bookedRooms,
被评估时, this
不是hotel
而是您正在运行代码的任何上下文。
var hotel = {
name: 'The Shining',
totalRooms: 238,
bookedRooms: 0,
roomTypes: ['single', 'double', 'haunted'],
bookRoom: function() {
this.availableRooms -= 1;
this.bookedRooms += 1;
}
}
hotel.availableRooms = hotel.totalRooms - hotel.bookedRooms
要么
Object.defineProperty(hotel, 'availableRooms', {
get: function() {
return this.totalRooms - this.bookedRooms
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.