05 Модуль -- 02 Конструкторы Flashcards
Функции вызываются используя два разных внутренних метода:
[[Call]] и [[Construct]]
Конструктор —
это обычная функция к которой применили оператор new. Это приводит к созданию нового объекта и вызову функции в контексте этого объекта.
Конструкторы принято называть, а в самом названии
с большой буквы, отражать тип создаваемого объекта
Пример конструктора
const Hotel = function (name, stars, capacity) { this.name = name; this.stars = stars; this.capacity = capacity; };
// В результате вызова const hotel = new Hotel('Resort Hotel', 5, 100); // Получаем такой объект console.log(hotel); // Hotel {name: "Resort Hotel", stars: 5, capacity: 100}
Какая функция не может быть конструктором
стрелочная. При вызове стрелки через new будет ошибка.
Когда функция вызывается без new, выполняется метод [[Call]],
который исполняет тело функции так, как оно описано в коде.
Когда функция вызывается с new, выполняется метод [[Construct]],
который отвечает за создание нового объекта и исполнения тела функции с this ссылающимся на этот объект.
Добавление методов(не по прототипу)
const Hotel = function (name, stars, capacity) {
this. name = name;
this. stars = stars;
this. capacity = capacity;
this. guestCount = 0;
this.greet = function (guestName) {
console.log(Hello ${guestName}, wellcome to ${this.name}
);
};
const hotel = new Hotel(‘Sunrise Hotel’, 5, 100);
console.log(hotel);
// Hotel {name: “Sunrise Hotel”, greet: ƒ, addGuests: f, removeGuests: f}
hotel.greet(‘Mango’); // Hello Mango, wellcome to Sunrise Hotel