Sto usando jQuery e ho una funzione che funge da callback di un evento, quindi in tale funzione "this" rappresenta l'oggetto che ha catturato l'evento. Tuttavia, c'è un'istanza in cui voglio chiamare la funzione esplicitamente da un'altra funzione: come posso impostare cosa "questo" sarà uguale nella funzione in questo caso?Quando si chiama una funzione Javascript, come si imposta un valore personalizzato di "this"?
Ad esempio:
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: usa la chiamata(), che è esattamente la stessa di apply() eccetto che passi una serie di argomenti invece di una matrice di argomenti. (https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/call) –
apply() e call() sono esattamente ciò che stavo cercando (sebbene nel codice della risposta sopra, dovrebbe essere [ e] perché, come ha detto Daniel, apply() prende una serie di argomenti). – Charles
Grazie per la correzione. Ho aggiornato la risposta. –