如何使用javascript传递具有可变参数的另一个函数中的函数?

时间:2015-05-12 19:15:46

标签: javascript function closures pass-by-reference

我有一个预处理功能,这是一个示例函数

function preprocess (msg, fct) {
   alert(msg);
   fct(???);
}

我需要在fct函数中执行函数preprocess,但fct并不总是具有相同数量的参数。我不是javascript专家,但我认为有两种方法可以实现这一点:

  1. 使用对象进行显式调用

    function preprocess (msg, fct, obj) { ... }
    
  2. 用法preprocess ('hello', myfct, {firstparam: 'foo', secondparam: 'bar'});

    1. 使用函数的内部属性
    2. 无论如何我可能有理论,我无法对上述两种情况进行编码。是否有可能使用两种方式实现我需要的东西?如果是的话,你能提供一个最小的例子给我指路吗?

1 个答案:

答案 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)