Вопрос проверяет понимание механизма привязки контекста через call и его взаимодействия со стрелочными функциями.
Метод call позволяет вызвать функцию с явно заданным значением this. Первый аргумент call становится контекстом для функции, а остальные передаются как параметры. Это полезно, когда нужно временно привязать функцию к другому объекту.
Стрелочные функции не имеют собственного this. Они захватывают this из окружающего контекста (лексическая область видимости) во время определения. Поэтому методы call, apply и bind не могут изменить их контекст — переданное значение игнорируется.
const obj = { name: 'Alice' };
function regularFunc() {
console.log(this.name);
}
const arrowFunc = () => {
console.log(this.name);
};
regularFunc.call(obj); // 'Alice' — контекст установлен
arrowFunc.call(obj); // undefined — this остаётся глобальным
Это важно учитывать при написании обработчиков событий или колбэков. Если внутри обычной функции используется call для передачи контекста, а внутри неё определена стрелочная функция, то стрелочная функция сохранит контекст внешней функции, а не переданный через call.
Используйте call для явной привязки контекста к обычным функциям. Для стрелочных функций контекст задаётся только местом их объявления, поэтому call на них не влияет. Это знание помогает избежать ошибок при работе с асинхронным кодом и колбэками.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию