Ключевое слово new в JavaScript следует точной последовательности шагов для создания нового объекта из функции-конструктора.
Когда ты вызываешь new Constructor(), JavaScript внутренне выполняет следующее:
{}[[Prototype]] нового объекта связывается с Constructor.prototypethis — внутри функции-конструктора this указывает на только что созданный объектthis, добавляются в новый объектfunction Person(name) {
this.name = name; // присваивается новому объекту
}
const p = new Person("Alice");
console.log(p.name); // "Alice"
Если конструктор явно возвращает непримитивное значение (например, объект), то возвращаемый объект имеет приоритет над только что созданным. Возврат примитива (например, числа или строки) игнорируется, и новый объект возвращается как обычно.
function Foo() {
return { custom: true }; // переопределяет новый объект
}
const f = new Foo();
console.log(f.custom); // true
Понимание new критически важно, потому что оно лежит в основе прототипного наследования в JavaScript. Связь прототипов, установленная на втором шаге, позволяет экземплярам наследовать методы, определённые на Constructor.prototype.
Когда используется ключевое слово new, [[Prototype]] созданного объекта автоматически связывается со свойством prototype функции-конструктора, что обеспечивает наследование на основе прототипов.
Новый — ещё не проверен сообществом
Вы