【发布时间】:2010-10-15 04:08:05
【问题描述】:
我正在寻找一个技巧。我知道如何在 JavaScript 中调用动态的任意函数,传递特定的参数,如下所示:
function mainfunc(func, par1, par2){
window[func](par1, par2);
}
function calledfunc(par1, par2){
// Do stuff here
}
mainfunc('calledfunc', 'hello', 'bye');
我知道如何使用mainfunc 中的arguments 集合传递可选的、无限制的参数,但是,我不知道如何将任意数量的参数发送到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');
【问题讨论】:
-
apply()的 PHP 等效项是call_user_func_array()。 phpjs.org/functions/call_user_func_array 解决方案也使用它。
标签: javascript function