Как передать несколько аргументов в функцию обратного вызова javascript? - PullRequest
17 голосов
/ 30 января 2009

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?

Большое спасибо!

1 Ответ

22 голосов
/ 30 января 2009

Вы, вероятно, хотите использовать метод применения

this.callback.apply(this, parameters);

Первый применяемый параметр указывает значение «this» в обратном вызове и может иметь любое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...