2009-01-30 4 views
17

Javascript:¿Cómo transfiero múltiples argumentos en una función de devolución de llamada javascript? código

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

El problema es que si puedo cambiar la función doSomething a

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

tengo que cambiar la línea correspondiente (marcado como //*.*) en SomeClass a

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

Qué se puede hacer para evitar que la línea (*.*) se cambie sin importar el número de 'doSo Los parámetros de la función mething '¿han cambiado?

¡Muchas gracias!

Respuesta

22

es probable que desee utilizar el apply method

this.callback.apply(this, parameters); 

El primer parámetro para aplicar indica el valor de "este" dentro de la devolución de llamada y se puede ajustar a cualquier valor.

+0

¡Trabajos! Gracias. – Shawn

+1

Estoy un poco confundido sobre cómo usar esta funcionalidad. Lo que quiero hacer es pasar una función a una devolución de llamada como esta: myfunction (function (myele) {// use myele}). Así que estoy pasando una función de devolución de llamada aquí con el parámetro myele que se le pasa. ¿Cómo podría hacer esto con su código anterior? – Metropolis

Cuestiones relacionadas