Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: this, context

Как передать корректный контекст в callback массива?

Вопрос проверяет знание способов управления контекстом this в callback-функциях.

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

Корректный контекст в callback можно передать несколькими способами: использовать стрелочную функцию, явно привязать this через bind или передать второй аргумент в методы массива. Самый популярный и безопасный способ — стрелочные функции, так как они не имеют собственного this. Выбор подхода зависит от стиля кода и окружения.

Длинный ответ

Основная идея

Перед тем как перечислять способы, важно помнить: this зависит не от места объявления функции, а от способа её вызова.

Способы передачи контекста

1. Стрелочная функция

Стрелочные функции не имеют собственного this и берут его из внешней области.

const obj = {
  limit: 2,
  filterNumbers(arr) {
    return arr.filter(n => n > this.limit);
  }
};

2. Явная привязка через bind

Можно вручную привязать контекст.

const obj = {
  limit: 2
};

[1, 2, 3].filter(function (n) {
  return n > this.limit;
}.bind(obj));

3. Второй аргумент filter

Методы массивов принимают thisArg.

const obj = { limit: 2 };

[1, 2, 3].filter(function (n) {
  return n > this.limit;
}, obj);

Какой способ предпочтительнее

  1. Стрелочные функции — современный стандарт

  2. bind полезен в старом коде

  3. thisArg встречается реже, но важно знать для собеседований

Вывод

Контекст в callback массива нужно передавать явно. Самый простой и читаемый способ — использовать стрелочные функции, которые наследуют this из внешней области.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#this

#context

Подпишись на React Developer в телеграм