Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: this, context, constructor

Как определяется this внутри функции-конструктора?

Этот вопрос проверяет понимание поведения ключевого слова this в контексте функций-конструкторов и механизма их работы.

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

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

Длинный ответ

Поведение this в функции-конструкторе

Значение this внутри функции-конструктора определяется способом вызова функции.

Контекст this при вызове с new

Когда функция вызывается с оператором new, происходит следующее:

javascript

function Car(brand, model) {
  // this автоматически ссылается на новый объект
  this.brand = brand;
  this.model = model;
  this.year = 2024;
}

const myCar = new Car('Toyota', 'Camry');

Механизм работы new

Оператор new выполняет четыре шага:

  1. Создание объекта: Создается новый пустой объект

  2. Установка прототипа: Прототип объекта связывается с свойством prototype конструктора

  3. Привязка this: this связывается с созданным объектом

  4. Возврат объекта: Если функция не возвращает объект, возвращается this

Отличие от обычного вызова

Без оператора new поведение this отличается:

javascript

function Car(brand) {
  this.brand = brand;
}

// С new - this ссылается на новый объект
const car1 = new Car('Toyota');
console.log(car1.brand); // "Toyota"

// Без new - this зависит от контекста (в строгом режиме undefined)
const car2 = Car('Honda'); // Ошибка или добавление в глобальный объект

Строгий режим

В строгом режиме поведение становится более предсказуемым:

javascript

'use strict';

function Car(brand) {
  this.brand = brand;
}

const car = new Car('Toyota'); // Работает
Car('Honda'); // Ошибка: Cannot set property 'brand' of undefined

Проверка вызова с new

Для защиты от вызова без new можно использовать проверки:

javascript

function Car(brand) {
  if (!(this instanceof Car)) {
    throw new Error('Конструктор Car должен вызываться с new');
  }
  this.brand = brand;
}

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#this

#context

#constructor

Подпишись на React Developer в телеграм