我有一个预处理功能,这是一个示例函数
function preprocess (msg, fct) {
alert(msg);
fct(???);
}
我需要在fct
函数中执行函数preprocess
,但fct
并不总是具有相同数量的参数。我不是javascript专家,但我认为有两种方法可以实现这一点:
使用对象进行显式调用
function preprocess (msg, fct, obj) { ... }
用法:preprocess ('hello', myfct, {firstparam: 'foo', secondparam: 'bar'});
无论如何我可能有理论,我无法对上述两种情况进行编码。是否有可能使用两种方式实现我需要的东西?如果是的话,你能提供一个最小的例子给我指路吗?
答案 0 :(得分:2)
您可以以可变形式传递最后的参数,并使用arguments
对象来获取所需内容:
function preprocess (msg, fct /*, ...as*/) {
var as = [].slice.call(arguments, 2);
alert(msg);
fct.apply(this, as);
}
preprocess(msg, fct, a, b, c); // fct(a, b, c)