Estoy usando jQuery y tengo una función que sirve como devolución de eventos de eventos, y en esa función "this" representa el objeto que capturó el evento. Sin embargo, hay una instancia en la que deseo llamar a la función explícitamente desde otra función: ¿cómo puedo establecer qué "esto" será igual dentro de la función en este caso?Al llamar a una función de Javascript, ¿cómo configuro un valor personalizado de "esto"?
Por ejemplo:
function handleEvent(event) {
$(this).removeClass("sad").addClass("happy");
}
$("a.sad").click(handleEvent); // in this case, "this" is the anchor clicked
function differentEvent(event) {
$("input.sad").keydown(e) {
doSomeOtherProcessing();
handleEvent(e); // in this case, "this" will be the window object
// but I'd like to set it to be, say, the input in question
}
}
Alternativa: use call(), que es exactamente lo mismo que apply() excepto que pasa una serie de argumentos en lugar de una matriz de argumentos. (https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/call) –
apply() y call() son exactamente lo que estaba buscando (aunque en el código de la respuesta anterior, debería ser [ e] porque, como dijo Daniel, apply() toma una matriz de argumentos). – Charles
Gracias por la corrección. Actualicé la respuesta. –