Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что происходит при вызове new класса
В JavaScript при вызове new с классом или конструктором функцией запускается последовательность операций, которая создаёт новый объект и инициализирует его.
Пошаговый процесс
Когда вы пишете:
const person = new Person("Иван");
В точности происходит следующее:
- Создание пустого объекта — JavaScript создаёт новый пустой объект
{} - Установка [[Prototype]] — объекту присваивается внутренний прототип, указывающий на
Person.prototype - Вызов конструктора — функция
Personвызывается с контекстомthis, указывающим на новый объект - Возврат объекта — если конструктор явно не возвращает объект, возвращается созданный объект
Пример с классом
class Person {
constructor(name) {
this.name = name; // this указывает на новый объект
this.age = 0;
}
greet() {
return `Привет, я ${this.name}`;
}
}
const person = new Person("Мария");
console.log(person instanceof Person); // true
console.log(person.greet()); // "Привет, я Мария"
Что происходит с функция-конструктором
function Animal(type) {
this.type = type;
this.sound = "..."; // свойства добавляются к this
}
Animal.prototype.makeSound = function() {
return `${this.type} издал звук: ${this.sound}`;
};
const dog = new Animal("собака");
dog.sound = "гав";
console.log(dog.makeSound()); // "собака издал звук: гав"
Цепочка прототипов
Основной момент — объект получает доступ к методам через цепочку прототипов:
dog.makeSound()— нет в самом объекте- Поиск идёт вверх по
dog.__proto__→Animal.prototype - Там находится метод
makeSound
Что будет при явном возврате
function BadConstructor() {
this.name = "obj";
return { different: true }; // явный возврат объекта
}
const result = new BadConstructor();
console.log(result.name); // undefined (вернулся другой объект)
console.log(result.different); // true
Ключевые моменты
- Если конструктор возвращает примитив или null — возврат игнорируется, возвращается созданный объект
- Если возвращает объект — возвращается именно тот объект (original теряется)
- this в конструкторе — всегда указывает на новый создаваемый объект
- instanceof работает — благодаря связи через
[[Prototype]] - Классы в ES6 — синтаксический сахар над функциями-конструкторами
Это фундаментальный механизм JavaScript, на котором строится вся объектная ориентация в языке.