Непрямой вызов выполняется, когда функция вызывается с использованием методов myFun.call() или myFun.apply().
Функции в JavaScript - это объекты первого класса, что означает, что функция - это объект. Тип такого объекта - Function.
Из списка методов, которые есть у объекта функции, .call() и .apply() используются для вызова функции с настраиваемым контекстом.
myFunction.call(thisArg, arg1, arg2, ...) принимает первый аргумент thisArg как контекст вызова и список аргументов arg1, args2, ..., которые передаются как аргументы вызываемой функции.
myFunction.apply(thisArg, [arg1, arg2, ...]) принимает первый аргумент thisArg в качестве контекста вызова и массив аргументов [arg1, args, ...], которые передаются в качестве аргументов вызываемой функции. .
В следующем примере демонстрируется непрямой вызов:
function sum(num1, num2) {
return num1 + num2;
}
sum.call(undefined, 10, 2); // => 12
sum.apply(undefined, [10, 2]); // => 12
sum.call() и sum.apply() вызывают функцию с аргументами 10 и 2.