使用稍后决定的参数调用JavaScript函数

时间:2012-04-18 22:21:06

标签: javascript

我想存储一个指向函数的指针,然后稍后用一些参数调用它,但是我在如何将参数传递给函数时遇到了麻烦。

例如:

var MyObject = (function () {
    return {
        myMethod: function (a, b) {
            return a + b;
        }
    };
}());

var method = MyObject.myMethod;
var args = [2, 5];

method(args);

所以在最后一行,我知道它不能做我想要的method(args),我想基本上调用MyObject.myMethod(2, 5),所以我的数组尝试失败并且创建一个对象也失败了。如何将存储的参数传递给存储的方法?

2 个答案:

答案 0 :(得分:8)

你可以使用apply接受一组参数作为参数

var myarray = [2,5,...] //your array of arguments

method.apply(this,myarray);  //execute your method

并且在您拥有的方法中,您可以通过“hidden”“伪数组”arguments参数接收参数。

function method(){
   var args = arguments; //is [2,5,...]
}

这比call有优势,因为你可以预先构建参数数组,而不必枚举调用()

中的参数

答案 1 :(得分:1)

ķ。斯科特艾伦有一篇关于此类事情的好文章。使用callapply作为影响被调用函数中this值的方法。

http://odetocode.com/blogs/scott/archive/2007/07/05/function-apply-and-function-call-in-javascript.aspx