2009-01-30 15 views
17

Javascript-Code:Wie übergebe ich mehrere Argumente in eine JavaScript-Callback-Funktion?

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')); 

Das Problem ist, wenn ich Funktion doSomething zu

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

Ich habe zu ändern

in SomeClass zu

this.callback(parameters[0],parameters[1],parameters[2]); 
die entsprechende Zeile (markiert als //*.*) ändern Was kann getan werden, um zu vermeiden, dass die (*.*) Zeile geändert wird, egal wie die Anzahl von 'doSo die Parameter der Funktion 'meting' werden geändert?

Vielen Dank!

Antwort

22

Sie wollen wahrscheinlich die apply method

this.callback.apply(this, parameters); 

Der erste Parameter verwenden, um angibt, von „dieser“ innerhalb der Callback den Wert anwenden und kann auf einen beliebigen Wert eingestellt werden.

+0

Funktioniert! Vielen Dank. – Shawn

+1

Ich bin ein wenig verwirrt, wie man diese Funktionalität benutzt. Was ich tun möchte ist, eine Funktion an einen Callback wie folgt zu übergeben - myfunction (function (myele) {// benutze myele}). Daher gebe ich hier eine Anon-Callback-Funktion, an die der myele-Parameter übergeben wird. Wie würde ich das mit Ihrem Code oben tun? – Metropolis

Verwandte Themen