Używam jQuery i mam funkcję, która służy jako wywołanie zwrotne zdarzenia, a więc w tej funkcji "to" reprezentuje obiekt, który przechwycił zdarzenie. Istnieje jednak przypadek, w którym chcę wywołać funkcję jawnie z innej funkcji - jak ustawić, co "to" będzie równe w funkcji w tym przypadku?Podczas wywoływania funkcji JavaScript, jak ustawić niestandardową wartość "to"?
Na przykład:
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
}
}
Alternatywa: użyj funkcji call(), która jest dokładnie taka sama jak apply(), z wyjątkiem podania serii argumentów zamiast tablicy argumentów. (https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/call) –
apply() i call() są dokładnie tym, czego szukałem (chociaż w powyższym kodzie odpowiedzi powinno być [ e], ponieważ, jak powiedział Daniel, apply() przyjmuje szereg argumentów). – Charles
Dzięki za poprawkę. Zaktualizowałem odpowiedź. –