Reputation: 326
Can someone please explain why hotel.availableRooms is NaN? I am trying to learn objects in JavaScript. Thanks!
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);
Upvotes: 0
Views: 37
Reputation: 45121
When the expression availableRooms: this.totalRooms - this.bookedRooms,
is evaluated this
is not hotel
but whatever context you are running your code.
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
Or
Object.defineProperty(hotel, 'availableRooms', {
get: function() {
return this.totalRooms - this.bookedRooms
}
})
Upvotes: 1