从返回的函数中调用function.apply不会传递参数

时间:2014-08-07 17:33:10

标签: javascript closures

我需要使用任意参数列表调用不同数量的函数。

一般用例是将格式化函数分配给生成的表中的不同单元格。 我需要能够调用多个格式化程序,但我只能分配一个格式化函数,因此是multi()。

从multi返回的函数将作为实际格式化程序应用,并带有一组需要传递给每个单独格式化程序的参数。

    function multi(){
        var fns = arguments;
        return function(){
            var params = arguments;

            console.log(params);

            _.each(fns, function(fn){
                    fn.apply(params);
            }, this);
        };
    };

问题:参数' params'在multi()中可用,但实际上并没有传递给应用的函数。这些参数可用于console.log()调用,但未定义实际函数。

您可以查看此bin以获取此问题的示例: http://jsbin.com/pekomopi/1/edit

谢谢!

1 个答案:

答案 0 :(得分:1)

apply函数接受两个参数。第一个参数是函数的this。第二个参数是参数数组。

您所要做的就是将行更改为fn.apply(this, params)this是您希望成为this的{​​{1}}的任何对象。