Estoy buscando un truco sobre esto. Yo sé cómo llamar a una función dinámica, arbitraria en Javascript, el paso de parámetros específicos, algo como esto:Llamar a la función dinámica con parámetros dinámicos en Javascript
function mainfunc (func, par1, par2){
window[func](par1, par2);
}
function calledfunc(par1, par2){
// Do stuff here
}
mainfunc('calledfunc','hello','bye');
sé cómo pasar parámetros opcionales ilimitadas usando argumentos [] recogida en el interior mainfunc, pero, no se puede calcular cómo enviar un número arbitrario de parámetros a mainfunc para enviarse a calledfunc dinámicamente; ¿Cómo puedo lograr algo como esto, pero con cualquier cantidad de argumentos opcionales (sin usar ese feo if-else)? :
function mainfunc (func){
if(arguments.length == 3)
window[func](arguments[1], arguments[2]);
elseif(arguments.length == 4)
window[func](arguments[1], arguments[2], arguments[3]);
elseif(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');
El equivalente de PHP para 'apply()' es 'call_u ser_func_array() '. La solución http://phpjs.org/functions/call_user_func_array también lo usa. – powtac