0

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

例如:

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),所以我的数组尝试失败并且创建一个对象也失败了。如何将存储的参数传递给存储的方法?

4

2 回答 2

8

您可以使用applywhich 接受参数数组作为参数

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

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

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

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

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

于 2012-04-18T22:23:21.893 回答
1

K. Scott Allen 有一篇关于这类事情的很棒的旧文章。使用callorapply作为一种方式来影响被this调用函数内部的值。

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

于 2012-04-18T22:23:48.847 回答