Вот тут всё разжевано по этой теме https://www.youtube.com/watch?v=-wY3IYmQzzc Когда вы вызываете функцию через new - она является конструктором и возвращает объект. this необходим для привязки контекста, так как функция является объектом. this.cost в данном случае задает метод cost объекта функции, в виде объекта это выглядело бы так: {cost: function(nights) {}} Вопщем сходите по ссылке, а лучше пересмотрите весь курс, там такие вещи довольно доступно описаны.