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