Где доступен контекст?
Объекты и прототипы
Контекст (`this`) доступен внутри функции во время её вызова и определяется способом вызова. У стрелочных функций контекст берётся из внешнего окружения.
Где доступен this
this доступен внутри тела функции и указывает на объект контекста вызова:
const obj = {
name: 'Ann',
greet() {
return this.name; // this доступен, = obj
},
};
obj.greet(); // 'Ann'Зависит от способа вызова
- Метод
obj.fn()→this = obj. - Обычный вызов
fn()→undefined(strict) / globalThis. - new
new Fn()→ новый объект. - call/apply/bind → заданный.
- Стрелка → лексический (из внешнего окружения).
Глобальный контекст
Вне функций this в браузере (нестрогий режим) = window; в модуле — undefined.
Где this недоступен как ожидается
- Потерянный контекст (метод как колбэк без bind).
- Стрелка — берёт внешний
this, свой не имеет.
setTimeout(obj.greet, 100); // this потерян
setTimeout(() => obj.greet()); // this сохранёнКоротко для собеседования
Контекст (this) доступен внутри вызываемой функции и определяется способом вызова: метод → объект, new → новый объект, call/apply/bind → заданный, обычный вызов → undefined (strict). Стрелка берёт this лексически из окружения. При передаче метода как колбэка контекст теряется.