如何使用 javascript 将一个函数传递给另一个带有可变参数的函数?
How to pass a function in another function with variadic arguments with javascript?
我有一个预处理函数,这里是一个示例函数
function preprocess (msg, fct) {
alert(msg);
fct(???);
}
我需要在preprocess
函数中执行函数fct
,但是fct
并不总是有相同数量的参数。我不是 javascript 的专业人士,但我认为有两种方法可以实现:
使用对象显式调用
function preprocess (msg, fct, obj) { ... }
用法 : preprocess ('hello', myfct, {firstparam: 'foo', secondparam: 'bar'});
- 使用函数的内部参数属性
无论如何我可能有理论,我无法对上述两种情况进行编码。是否可以使用这两种方式来实现我所需要的?如果是,您能否提供每个示例的最小示例以向我展示方法?
您可以在末尾以可变形式传递参数,并使用 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)
我有一个预处理函数,这里是一个示例函数
function preprocess (msg, fct) {
alert(msg);
fct(???);
}
我需要在preprocess
函数中执行函数fct
,但是fct
并不总是有相同数量的参数。我不是 javascript 的专业人士,但我认为有两种方法可以实现:
使用对象显式调用
function preprocess (msg, fct, obj) { ... }
用法 : preprocess ('hello', myfct, {firstparam: 'foo', secondparam: 'bar'});
- 使用函数的内部参数属性
无论如何我可能有理论,我无法对上述两种情况进行编码。是否可以使用这两种方式来实现我所需要的?如果是,您能否提供每个示例的最小示例以向我展示方法?
您可以在末尾以可变形式传递参数,并使用 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)