我想存储一个指向函数的指针,然后稍后用一些参数调用它,但是我在如何将参数传递给函数时遇到了麻烦。
例如:
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)
,所以我的数组尝试失败并且创建一个对象也失败了。如何将存储的参数传递给存储的方法?
答案 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)
ķ。斯科特艾伦有一篇关于此类事情的好文章。使用call
或apply
作为影响被调用函数中this
值的方法。