hellojs.ru
Главная - JavaScript в работе - Функции-конструкторы

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

Размещено в категории "JavaScript в работе"
18.11.2024 / просмотров: 13 / комментариев: 0
Ресурсы:

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



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

Код

function User(name, id) {

}

Внутри мы запишем свойство, которое будет отображаться также, как в объекте:

Код

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', 32);

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

Теперь выведем в консоль эти две переменные:

Код

console.log(ivan);
console.log(alex);

Цитата

User { name: 'Ivan', id: 28, human: true }
User { name: 'Alex', id: 32, 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

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

Например, добавим какой-то метод exit

Код

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

Теперь этот метод будет протипно наследоваться и станет доступным у всех потомков, которые были созданы после объявления этого метода.

Код

ivan.exit(); // Пользователь Ivan ушёл

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

Например, на одной и той же странице есть несколько слайдеров, но у одного из них 5 слайдов, в другом 10, у одного есть автопереключение, у другого нет.

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

Цитата

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

Выглядят они так:

Код

class User {
  constructor(name, id) {
  this.name = name;
  this.id = id;
  this.human = true;
  }
  hello() {
  console.log(`Hello, ${this.name}`);
  }
  exit() {
  console.log(`Пользователь ${this.name} ушёл`);
  }
}

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
Сайт управляется системой uCoz