Функция-конструктор — это обычная функция со следующими соглашениями:
- Имя функции-конструктора начинается с заглавной буквы.
- Функцию конструктора следует вызывать только с оператором new.
По сути, новый оператор делает следующее в приведенном выше коде:
- Создает пустой объект и назначает его этому.
- Присваивает аргументы «John», «Cena» свойствам firstName и lastName.
- Верните этозначение.
Функция конструктора позволяет создавать несколько похожих объектов.
пусть person1 = новый человек («Джеймс», «Смит»);
пусть person2 = новый человек («Рохит», «Шарма»);
Добавление методов в функцию-конструктор
Объект может иметь методы, которые манипулируют его данными. Чтобы добавить метод к объекту, созданному с помощью функции-конструктора, вы можете использовать ключевое слово this.
Проблема с функцией конструктора заключается в том, что когда вы создаете несколько экземпляров Object Person, this.getName() дублируется в каждом экземпляре. Это не эффективно для памяти.
Чтобы решить эту проблему, вы можете использовать прототип, чтобы все экземпляры пользовательского типа могли совместно использовать одну и ту же память.
Функция конструктора возвращаемой формы
Если return вызывается внутри объекта, функция конструктора возвращает этот объект вместо этот.
Если возврат вызывается со значением, отличным от объекта, он игнорируется.
Вызов функции-конструктора без нового ключевого слова
let person= Person("Джон","Сена");
В этом случае Person просто выполняется как обычная функция. Таким образом, thisвнутренний объект Person не привязан к переменной person, а привязан к глобальному объекту.
Если вы попытаетесь получить доступ к свойствам объекта, вы получите ошибку типа.
console.log(person.firstName) //Ошибка: невозможно прочитать свойства неопределенного
Чтобы предотвратить вызов функции конструктора без нового ключевого слова, в ES6 было введено свойство new.target.
Если функция-конструктор вызывается с новым ключевым словом, new.target возвращает ссылку на функцию. В противном случае возвращается значение undefined.