繁体   English   中英

为什么此对象变量表达式不起作用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM