如何将多个参数传递给javascript回调函数?

时间:2009-01-30 07:19:38

标签: javascript callback

Javascript代码:

function doSomething(v1,v2){ //blah; }

function SomeClass(callbackFunction,callbackFuncParameters(*Array*))={
   this.callback = callbackFunction;
   this.method = function(){
       this.callback(parameters[0],parameters[1])  // *.*
   }
}

var obj = new SomeClass( doSomething, Array('v1text','v2text') );

问题是如果我将函数doSomething更改为

function doSomething(v1,v2,v3){ //blah; }

我必须将//*.*中的相应行(标记为SomeClass)更改为

this.callback(parameters[0],parameters[1],parameters[2]);

无论“doSomething”函数的参数数量如何变化,可以采取哪些措施来避免更改(*.*)行?

非常感谢!

2 个答案:

答案 0 :(得分:22)

您可能想要使用apply method

this.callback.apply(this, parameters);

要应用的第一个参数表示回调中“this”的值,可以设置为任何值。

答案 1 :(得分:0)

现在可用的另一种方法是使用spread syntax

this.callback(...callbackFuncParameters)

这里再次是来自OP的完整示例:

function doSomething(v1,v2) {
    console.log('doing', {v1, v2});
}

function SomeClass(callbackFunction, callbackFuncParameters) {
   this.callback = callbackFunction;
   this.method = function(){
       this.callback(...callbackFuncParameters); // spread!
   }
}

var obj = new SomeClass( doSomething, Array('v1text','v2text') );
obj.method()
// output: doing {v1: "v1text", v2: "v2text"}