Что такое метод apply в JavaScript?

«Что такое метод apply в JavaScript?» — вопрос из категории JavaScript, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Метод apply() — это встроенный метод функции, который позволяет вызвать её с заданным значением this и аргументами, переданными в виде массива (или массивоподобного объекта). Это ключевой инструмент для управления контекстом выполнения.

Основное отличие от call(): call() принимает список аргументов, а apply() — массив аргументов.

Пример использования:

function introduce(role, project) {
    console.log(`Меня зовут ${this.name}, я ${role} в проекте ${project}.`);
}

const developer = { name: 'Анна' };

// Вызываем функцию introduce, устанавливая developer как контекст (this)
// и передаём аргументы ['бэкенд-разработчик', 'API Gateway'] как массив.
introduce.apply(developer, ['бэкенд-разработчик', 'API Gateway']);
// Вывод: Меня зовут Анна, я бэкенд-разработчик в проекте API Gateway.

Технические детали:

  • Первый аргумент: Значение, которое станет this внутри вызываемой функции. Если передать null или undefined, в нестрогом режиме this будет ссылаться на глобальный объект (в браузере — window, в Node.js — global).
  • Второй аргумент: Массив (или объект с length, например arguments), элементы которого становятся аргументами функции.
  • Практическое применение в Node.js: Исторически apply() был полезен для вызова функций с переменным числом аргументов или для передачи массива данных. С появлением оператора расширения (...) его использование сократилось, но понимание метода важно для работы с унаследованным кодом и для низкоуровневых операций с функциями.