Функции-конструкторы

Создадим новую функцию, с двумя параметрами:

Код
function User(name, id) {

};

Запишем в неё некоторые свойства по типу как мы это делали в объекте, для этого нам понадобится ключевое слово this

Код
function User(name, id) {
  this.name = name;
  this.id = id;
};

Данная запись говорит нам, что при создании каждого нового пользователя, у него будут уникальные имя и идентификатор.

Добавим также общее для всех пользователей свойство:

Код
function User(name, id) {
  this.name = name;
  this.id = id;
  this.human = true;
};

Данная функция не что иное как конструктор, с помощью которой можно создавать новых пользователей.

Код
const ivan = new User('Ivan', 28);
const alex = new User('Alex', 20);

Внутри переменных ivan и alex будет находиться уже не функция, а объект.

Код
console.log(ivan);
console.log(alex);

Цитата
User { name: 'Ivan', id: 28, human: true }
User { name: 'Alex', id: 20, human: true }

В функцию-конструктор мы можем также помещать кроме свойств и какие-то методы:

Код
function User(name, id) {
  this.name = name;
  this.id = id;
  this.human = true;
  this.hello = function() {
  console.log(`Hello, ${this.name}`);
  }
};

Проверим как сработает метод из конструктора на созданных нами экземплярах:

Код
ivan.hello();
alex.hello();

Цитата
Hello, Ivan
Hello, Alex

Когда нет прямого доступа к функции-конструктору, к прототипу, для добавления в него методов можно пользоваться свойством prototype.

Добавим, например, какой-то свой метод exit()

Код
User.prototype.exit = function() {
  console.log(`Пользователь ${this.name} ушёл.`);
};

Данный метод добавится в функцию-конструктор и будет прототипно наследоваться всеми созданными экземплярами.

Код
ivan.exit();
alex.exit();

Цитата
Пользователь Ivan ушёл.
Пользователь Alex ушёл.

Функции-конструкторы нам нужны для создания новых однотипных объектов, например, новые пользователи сайта, товары в интернет-магазинах, ролики соцсетей, компоненты сайтов, то есть везде, где требуется шаблонизация.

В стандарте ES6 появились классы - "синтаксический сахар", то есть красивая обёртка уже существующего функционала функций-конструкторов.
Классы удобнее использовать и с их помощью в настоящее время пишется код.

Функции-конструкторы

Всего комментариев: 0

Имя *:
Email *:
Код *:
Хостинг от uCoz