> Почему this динамический в JavaScript и когда он определяется (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Домклик

Стек: JavaScript

> Пример ответа

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

Значение this зависит от контекста вызова:

  • Глобальный контекст (в браузере): this ссылается на window (или globalThis в Node.js).
  • Обычная функция (не в строгом режиме): this указывает на глобальный объект. В строгом режиме ('use strict') - undefined.
  • Метод объекта: this - сам объект, перед которым стоит точка при вызове (obj.method()this = obj).
  • Конструктор (через new): this - новый создаваемый экземпляр.
  • call/apply/bind: явно задают this первым аргументом.
  • Стрелочные функции: исключение - они не имеют собственного this, а наследуют его из внешнего лексического окружения (где были объявлены).

Пример:

JAVASCRIPT
const obj = {
name: 'Alice',
regularFunc() { console.log(this.name); },
arrowFunc: () => console.log(this.name)
};
obj.regularFunc(); // 'Alice' - this = obj
obj.arrowFunc(); // undefined (в глобальном контексте) - this унаследован извне

Таким образом, динамичность this - это гибкость, но и источник ошибок, если не понимать, как и когда он вычисляется.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью