На какой объект указывает this при вызове функции-конструктора?

Контекст: JavaScript, функция-конструктор this указывает на новый объект, который создаётся во время работы конструктора при этом выполняются автоматическое создание и возврат объекта в this записываются поля и…

Короткий ответ

Что ответить на собеседовании

Контекст: JavaScript, функция-конструктор this указывает на новый объект, который создаётся во время работы конструктора при этом выполняются автоматическое создание и возврат объекта в this записываются поля и методы, определённые внутри конструктора в конструкторе this не ссылается на глобальный объект и не имеет значения undefined если конструктор явно возвращает объект, именно он заменяет this механизм применяется для инициализации экземпляров (объектов) классов или шаблонов благодаря this можно создавать независимые объекты с одной и той же структурой

Подробный разбор

Ответ с пояснениями

На какой объект указывает this при вызове функции-конструктора?

  • Контекст: JavaScript, функция-конструктор
  • this указывает на новый объект, который создаётся во время работы конструктора
  • при этом выполняются автоматическое создание и возврат объекта
  • в this записываются поля и методы, определённые внутри конструктора
  • в конструкторе this не ссылается на глобальный объект и не имеет значения undefined
  • если конструктор явно возвращает объект, именно он заменяет this
  • механизм применяется для инициализации экземпляров (объектов) классов или шаблонов
  • благодаря this можно создавать независимые объекты с одной и той же структурой

Итог: при вызове конструктора через new this указывает на создаваемый объект, который будет возвращён.

Подробный ответ

Основной ответ

Когда функция-конструктор вызывается с оператором new, переменная this внутри неё ссылается на созданный новый объект. Сначала формируется пустой объект, затем он связывается с прототипом конструктора, после чего this указывает именно на него. После выполнения тела конструктора возвращается this, если конструктор явно не вернул другое значение.

Ключевые моменты

  • Создание нового объекта: оператор new FunctionName() формирует пустой объект и связывает его с FunctionName.prototype.
  • Привязка this: во время выполнения конструктора this ссылается на только что созданный объект.
  • Возврат результата: если конструктор явно не возвращает объект, результатом становится this. При возврате объекта возвращается он, а не this; примитивное значение игнорируется, поэтому возвращается this.
  • Именно этим вызов конструктора отличается от обычного вызова функции без new: в последнем случае значение this определяется контекстом — например, равно undefined в строгом режиме либо глобальному объекту в нестрогом.

Практический контекст

В прикладной разработке важно понимать, чему равен this при вызове конструктора, поскольку это напрямую связано с созданием экземпляров классов и компонентов. Например, в конструкторах ES5 часто используется следующий подход:

function User(name) {
this.name = name;
}
const user1 = new User('Alice');

В данном случае this внутри User ссылается на создаваемый объект user1. В ES6 классы используют тот же принцип, последовательно реализуя его внутренне.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку