call и apply: явный контекст разового вызова
Методы call и apply вызывают функцию сразу, передавая заданный this и аргументы.
Назначение
Методы call и apply вызывают функцию сразу, передавая заданный this и аргументы.
Как это работает
call принимает аргументы по отдельности, apply — в массивоподобном наборе. В отличие от bind они не создают отложенный привязанный callback. Для стрелок собственный контекст таким способом не назначается.
Пример
function total(a,b){return this.base+a+b;}
const context={base:10};
console.assert(total.call(context,2,3)===15);
console.assert(total.apply(context,[2,3])===15);
Что должно получиться
Оба вызова дают 15 и сразу завершают вычисление. Различается только способ передачи дополнительных аргументов, а не правило сложения или объект контекста.
Граница применения и частая ошибка
Не передавайте огромный массив через apply без оценки ограничения количества аргументов. Для обработки больших коллекций лучше выбрать последовательный алгоритм.
Самостоятельная проверка
Вызовите одну функцию обоими способами и сравните результат. Затем напишите обычную обёртку для того же вызова и решите, какая форма понятнее в конкретном коде.
JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.