Что такое контекст?
Объекты и прототипы
Контекст (context) в JavaScript — это объект, на который ссылается this во время выполнения функции. Он определяется тем, как функция вызвана.
Не путать с областью видимости
- Область видимости (scope) — где доступны переменные (определяется при объявлении).
- Контекст (this) — какой объект «владеет» вызовом (определяется при вызове).
Как определяется контекст
const user = {
name: 'Ann',
greet() {
return this.name; // this = user
},
};
user.greet(); // 'Ann' — контекст user
const fn = user.greet;
fn(); // undefined (strict) — контекст потерянУправление контекстом
call(obj, ...args)— вызвать с заданнымthis.apply(obj, [args])— то же, аргументы массивом.bind(obj)— вернуть функцию с зафиксированнымthis.- Стрелочная функция — берёт контекст из внешнего окружения.
greet.call({ name: 'Bob' }); // 'Bob'Коротко для собеседования
Контекст — это this, объект-владелец вызова, определяемый способом вызова (метод, new, call/apply/bind, стрелка). Отличается от области видимости, которая про доступность переменных при объявлении.