> Почему 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, а наследуют его из внешнего лексического окружения (где были объявлены).
Пример:
JAVASCRIPTconst obj = {name: 'Alice',regularFunc() { console.log(this.name); },arrowFunc: () => console.log(this.name)};obj.regularFunc(); // 'Alice' - this = objobj.arrowFunc(); // undefined (в глобальном контексте) - this унаследован извне
Таким образом, динамичность this - это гибкость, но и источник ошибок, если не понимать, как и когда он вычисляется.
> Похожие задачи по frontend
Как catch влияет на цепочку промисов в JavaScript
Как отсутствие собственного this у стрелочной функции влияет на вызов методов в JavaScript?
Какие данные (примитивы или объекты) можно хранить в localStorage
Какие коллекции кроме Set существуют в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью