Сохранение значения this при использовании прослушивателя событий
У меня есть следующая функция:
onDocumentKeyUp: function (e) {
if (e.keyCode === 27) {
this.deactivate();
}
}
Я хотел связать это так:
$(document).on('keyup', onDocumentKeyUp);
Однако, когда я это делаю,this
внутриonDocumentKeyUp
Функция относится к документу. Я решил это, выполнив:
var self = this;
$(document).on('keyup', function(e) { self.onDocumentKeyUp(e); });
Это работает, но что-то говорит мне, что есть более чистый способ справиться с этим. Было бы.call()
или же.apply()
как-то .. подать заявку здесь? Я до сих пор не уверен, как именно работают эти функции.
Кроме того, мне не обязательно ограничивать себяjQuery.on()
, Если есть «ванильный» способ сделать это, будь моим гостем, чтобы научить меня.