2010-07-13 9 views
6

Tengo una función que toma una función de devolución de llamada. ¿Cómo puedo configurar la variable 'this' de la función de devolución de llamada?Javascript: cómo configuro la variable 'this' para una función

por ejemplo.

function(fn){ 
    //do some stuff 
    fn(); //call fn, but the 'this' var is set to window 
    //, how do I set it to something else 
} 

Respuesta

13

se puede ejecutar una función en el contexto de un objeto utilizando call:

fn.call(obj, 'param') 

También hay apply

La única diferencia es la sintaxis para los argumentos de alimentación.

+0

gracias! funcionó perfectamente! – Kyle

2

Puede usar apply() o call().

Cualquiera le permite ejecutar una función con su elección de qué this está dentro de la función. Apply toma los argumentos para la función como una matriz, mientras que call le permite especificarlos individualmente.

2
funct.call(objThatWillBeThis, arg1, ..., argN); 

o

funct.apply(objThatWillBeThis, arrayOfArgs); 
2

Puede utilizar cualquiera .call() o .apply(). Dependiendo de tu requerimiento Here es un artículo sobre ellos.

Básicamente lo que quieren:

function(fn){ 
    //do some stuff 
    fn.call(whateverToSetThisTo); //call fn, 

} 
Cuestiones relacionadas