Ответ
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 определяется в момент вызова функции, а не её объявления.