Ответ
this
в JavaScript указывает на контекст выполнения функции. Его значение зависит от того, как функция вызывается:
-
Глобальный контекст:
Вне функцийthis
ссылается на глобальный объект (window
в браузере,global
в Node.js). -
Метод объекта:
В методе объектаthis
ссылается на сам объект.const obj = { name: 'Test', greet() { console.log(this.name); } }; obj.greet(); // 'Test'
-
Обычная функция:
В строгом режиме ('use strict'
)this
будетundefined
, иначе — глобальный объект.function test() { console.log(this); } test(); // window (или undefined в strict mode)
-
Стрелочная функция:
Не имеет своегоthis
, берет его из внешнего контекста.const obj = { name: 'Test', greet: () => console.log(this.name) // this — внешний контекст (например, window) }; obj.greet(); // undefined (если нет name в глобальном объекте)
-
Явное указание:
Можно привязать контекст с помощьюcall
,apply
илиbind
.function greet() { console.log(this.name); } greet.call({ name: 'Alice' }); // 'Alice'
Контекст this
определяется в момент вызова функции, а не её объявления.