Почему в callback функции filter теряется контекст this и как это исправить?

Обычный callback filter вызывается без объекта-владельца, поэтому его this не становится исходным объектом автоматически. Используйте стрелку, bind или thisArg.

Короткий ответ

Что ответить на собеседовании

Обычный callback filter вызывается без объекта-владельца, поэтому его this не становится исходным объектом автоматически. Используйте стрелку, bind или thisArg.

Подробный разбор

Ответ с пояснениями

Обычный callback filter вызывается без объекта-владельца, поэтому его this не становится исходным объектом автоматически. Используйте стрелку, bind или thisArg.

const group = {
  min: 3,
  select(values) { return values.filter(value => value >= this.min); }
};

Стрелка берёт this из select, поэтому сам select нужно вызвать как метод group. Альтернатива: values.filter(function (value) { return value >= this.min; }, this). Переданный thisArg не изменит лексический this стрелочной функции.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее