Как работает this в функции-конструкторе? функция-конструктор запускается с помощью ключевого слова new this указывает на создаваемый новый объект в конструкторе this непосредственно связан с новым экземпляром явный возврат объекта из конструктора заменяет результат this используется для инициализации свойств экземпляра при вызове через new this не определяется внешним контекстом, а жестко привязан к new механизм необходим для создания экземпляров классов и объектов через функцию
На какой объект ссылается this внутри функции-конструктора?
Как работает this в функции-конструкторе? функция-конструктор запускается с помощью ключевого слова new this указывает на создаваемый новый объект в конструкторе this непосредственно связан с новым экземпляром явный…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Как работает this в функции-конструкторе?
- функция-конструктор запускается с помощью ключевого слова new
- this указывает на создаваемый новый объект
- в конструкторе this непосредственно связан с новым экземпляром
- явный возврат объекта из конструктора заменяет результат
- this используется для инициализации свойств экземпляра
- при вызове через new this не определяется внешним контекстом, а жестко привязан к new
- механизм необходим для создания экземпляров классов и объектов через функцию
Детально:
Вызов функции с new включает несколько шагов: создаётся пустой объект, this внутри функции получает ссылку на него, затем конструктор инициализирует свойства через this. После выполнения этот объект возвращается, если явный return не подменил его. При вызове без new this в старом режиме может указывать на глобальный объект, а в strict — иметь значение undefined, что ведёт к ошибкам или нежелательному поведению.
Развернутый ответ
Краткий ответ
В JavaScript внутри функции-конструктора ключевое слово this обозначает создаваемый объект. При вызове через оператор new сначала создаётся пустой объект, затем он становится значением this внутри конструктора, после чего функция возвращает его, если явно не указан другой объект. Следовательно, this — это экземпляр, свойства которого инициализируются и который обычно становится результатом вызова.
Основные моменты
- Вызов с
newсоздаёт объект с прототипомFunctionName.prototype, аthisуказывает именно на этот объект. - Если конструктор возвращает примитив, значение игнорируется, и по умолчанию возвращается объект
this. При возврате объекта результатом становится уже он. - При вызове без
newзначениеthisопределяется контекстом: это может быть глобальный объект,undefinedв строгом режиме или явно заданное значение.
Практическое применение
Типичный сценарий — установка свойств через this в React-классовых компонентах или при создании custom объектов. В ES6+ функции-конструкторы часто заменяют классами: поведение this остаётся аналогичным, но синтаксис становится удобнее и безопаснее. Пропуск new при вызове конструктора — распространённая ошибка: она меняет смысл this и может вызвать баги.