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ć.

questionAnswers(2)

yourAnswerToTheQuestion