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

标签 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() 调用,但未定义实际函数。

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

谢谢!

最佳答案

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

您所要做的就是将该行更改为fn.apply(this, params)this 可以是您想要成为 fnthis 的任何对象。

关于javascript - 从返回的函数中调用 function.apply 不传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25188681/

相关文章:

javascript - 当我们有闭包时,JavaScript 中是否需要原型(prototype)?

python - 这是 Python/Numpy 的 bug 还是微妙的陷阱?

javascript - javascript 与 java 的闭包

javascript - 如何在 XQuery 函数中转义 Javascript

javascript - 如何展平和合并每个子数组中的嵌套数组

javascript - 播放音频 html 标签不起作用

ios - swift:如何从两个单独的方法执行相同的闭包

objective-c - 以 Swift 方式将 Objective-C block 转换为闭包

javascript - 如何使用 JQuery 从另一个文件加载 HTML 片段?

javascript - 如何在 Ionic 的框架内打开 webview?