Подтвердить что ты не робот

Javascript: функция вызова, передать массив аргументов, аналогично функции setTimout()

Я хочу сделать то, что setTimout делает, вручную, без тайм-аута.

setTimeout(function,0,args);

Просто вызовите функцию и передайте ей массив аргументов, не зная и не заботясь о количестве аргументов.

В принципе, я хочу проксировать вызов функции через другую функцию.

Я плохо отношусь к терминологии, извините.

4b9b3361

Ответ 1

function f(a, b, c) { return a + b + c; }
alert(f.apply(f, ['hello', ' ', 'world']));

Ответ 2

В ES6:

function myFunc(a, b, c){
    console.log(a, b, c);
}

var args = [1, 2, 3];
myFunc(...args);

Ответ 3

Похоже, вы хотите использовать функцию с переменными аргументами в качестве аргумента. Лучший способ сделать это - явный массив или объект вообще.

myFunction(callbackFunction, count, arrayOfOptions);

myFunction(callbackFunction, count, objectOfOptions);

Ответ 4

Посмотрите на javascript arguments. Это массив всех аргументов, переданных функции.

Итак, вы можете создать свою основную функцию следующим образом:

f = function () {
    for (arg in arguments) {
         // do stuff
    }
}

Затем создайте новую функцию с правильными аргументами:

f2 = function () {
    return f(arg1, arg2, arg3 /* etc. */);
}

И передайте эту функцию в setTimeout:

setTimeout(f2, 0);