Как работает new

`new` используется для создания экземпляра объекта на основе функции-конструктора или класса. Процесс его работы можно разделить на несколько шагов:

1. Создание нового объекта: Когда вы используете его, JavaScript создаёт новый пустой объект.

2. Присвоение прототипа: Прототип созданного объекта устанавливается в значение свойства `prototype` функции-конструктора. Это означает, что новый объект наследует свойства и методы, определённые в прототипе конструктора.

3. Вызов функции-конструктора: Функция-конструктор вызывается с аргументами, переданными в неи, и контекстом `this`, установленным в только что созданный объект. Это позволяет добавлять свойства и методы непосредственно к экземпляру.

4. Возврат значения: Если функция-конструктор возвращает объект, то этот объект возвращается вместо только что созданного. Если возвращается не объект (например, примитивное значение) или функция-конструктор вообще ничего не возвращает, то возвращается созданный на шаге 1 объект.

Пример:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.greet = function() {
  console.log(`Привет, меня зовут ${this.name}!`);
};

// Создаём новый объект с помощью new
const person1 = new Person('Алексей', 30);

person1.greet(); // Выводит: "Привет, меня зовут Алексей!"

В этом примере `new Person('Алексей', 30)` создаёт новый объект, прототипом которого является `Person.prototype`, и вызывает функцию `Person` с `this`, указывающим на новый объект, что позволяет добавить свойства `name` и `age` к этому объекту. После этого, с новым объектом можно взаимодействовать, как с экземпляром `Person`, включая вызов методов, определённых в `Person.prototype`.

`new` позволяет создавать новые объекты на основе функций-конструкторов или классов, автоматически устанавливая связь между созданным объектом и прототипом конструктора, что обеспечивает наследование свойств и методов.

Feb. 27, 2024, easyoffer