Я ищу трюк по этому поводу. Я знаю, как вызывать динамическую, произвольную функцию в JavaScript, передавая конкретные параметры, что-то вроде этого:
function mainfunc(func, par1, par2){
window[func](par1, par2);
}
function calledfunc(par1, par2){
// Do stuff here
}
mainfunc('calledfunc', 'hello', 'bye');
Я знаю, как передавать необязательные, неограниченные параметры, используя коллекцию arguments
внутри mainfunc
, но я не могу понять, как отправить произвольное количество параметров в mainfunc
для динамической отправки в calledfunc
; как я могу сделать что-то подобное, но с любым количеством необязательных аргументов (без использования этого уродливого if
- else
)?
function mainfunc(func){
if(arguments.length == 3)
window[func](arguments[1], arguments[2]);
else if(arguments.length == 4)
window[func](arguments[1], arguments[2], arguments[3]);
else if(arguments.length == 5)
window[func](arguments[1], arguments[2], arguments[3], arguments[4]);
}
function calledfunc1(par1, par2){
// Do stuff here
}
function calledfunc2(par1, par2, par3){
// Do stuff here
}
mainfunc('calledfunc1', 'hello', 'bye');
mainfunc('calledfunc2', 'hello', 'bye', 'goodbye');