Не пойму почему код работает?
При создании объекта Tour, создаётся его метод cost. Значение типа функция помещается в поле cost объекта, this - псевдоним объекта.
Так как cost использует переменную price, объявленную при создании объекта, она становится замыканием и у функции cost есть к ней доступ.
И на конец при вызове функции cost, она получает переменную nights и умножает её на уже сохранённую переменную price.
js оопjs замыкания