Создадим новую функцию, с двумя параметрами:
Код
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