Вопрос проверяет знание способов управления контекстом this в callback-функциях.
Корректный контекст в callback можно передать несколькими способами: использовать стрелочную функцию, явно привязать this через bind или передать второй аргумент в методы массива. Самый популярный и безопасный способ — стрелочные функции, так как они не имеют собственного this. Выбор подхода зависит от стиля кода и окружения.
Перед тем как перечислять способы, важно помнить: this зависит не от места объявления функции, а от способа её вызова.
Стрелочные функции не имеют собственного this и берут его из внешней области.
const obj = {
limit: 2,
filterNumbers(arr) {
return arr.filter(n => n > this.limit);
}
};
Можно вручную привязать контекст.
const obj = {
limit: 2
};
[1, 2, 3].filter(function (n) {
return n > this.limit;
}.bind(obj));
Методы массивов принимают thisArg.
const obj = { limit: 2 };
[1, 2, 3].filter(function (n) {
return n > this.limit;
}, obj);
Стрелочные функции — современный стандарт
bind полезен в старом коде
thisArg встречается реже, но важно знать для собеседований
Контекст в callback массива нужно передавать явно. Самый простой и читаемый способ — использовать стрелочные функции, которые наследуют this из внешней области.