Как передать переменную в объект?

285
11 ноября 2018, 14:40

var booked = document.getElementById('booked'); 
booked = +booked.innerText; 
 
var hotel = { 
  name: "Santor", 
  rooms: 20, 
  checkAvailability: function(booked) { 
    return this.rooms - booked; 
  } 
} 
console.log(hotel.checkAvailability());
<p id="booked">12</p>

Выскакивает NaN. Ожидал получить 8.

Answer 1

Сейчас это не работает, потому что при вызове: hotel.checkAvailability() ничего не передается, и, следовательно, значение параметра booked внутри функции будет undefined.

Чтобы это заработало - нужно передать booked при вызове функции.

var booked = document.getElementById('booked'); 
booked = +booked.innerText; 
 
var hotel = { 
  name: "Santor", 
  rooms: 20, 
  checkAvailability: function(booked) { 
    return this.rooms - booked; 
  } 
} 
console.log(hotel.checkAvailability(booked));
<p id="booked">12</p>

Либо убрать сам параметр, в этом случае будет использовать глобальная переменная:

var booked = document.getElementById('booked'); 
booked = +booked.innerText; 
 
var hotel = { 
  name: "Santor", 
  rooms: 20, 
  checkAvailability: function() { 
    return this.rooms - booked; 
  } 
} 
console.log(hotel.checkAvailability());
<p id="booked">12</p>

READ ALSO
Как запускать плагин Typit.js только по клику

Как запускать плагин Typit.js только по клику

Есть такой плагин, называется TypeItЯ хочу сделать меню на сайте, с эффектом печатающегося текста

187
Как скрыть navbar при клике на пункт меню?

Как скрыть navbar при клике на пункт меню?

Как закрывать меню Bootstrap при нажатии на любой пункт меню в мобильной версии?

266
Запись/Сохранение видео с веб-камеры

Запись/Сохранение видео с веб-камеры

У меня есть два примера кодаПервый - запускает веб-камеру, и выводит списки девайсов (микрофон, камера и тд)

221