Utrzymanie wartości „this” podczas używania detektora zdarzeń
Mam następującą funkcję:
onDocumentKeyUp: function (e) {
if (e.keyCode === 27) {
this.deactivate();
}
}
Chciałem to powiązać tak:
$(document).on('keyup', onDocumentKeyUp);
Jednak kiedy to robię,this
w środkuonDocumentKeyUp
funkcja odnosi się do dokumentu. Rozwiązałem to, wykonując:
var self = this;
$(document).on('keyup', function(e) { self.onDocumentKeyUp(e); });
To działa, ale coś mówi mi, że jest lepszy sposób, aby to wyłączyć. By.call()
lub.apply()
w jakiś sposób ... tutaj? Nadal nie wiem, jak dokładnie działają te funkcje.
Poza tym niekoniecznie muszę się ograniczaćjQuery.on()
. Jeśli jest to „waniliowy” sposób, bądź moim gościem, aby mnie uczyć.