Javascript 保持'的价值;这';使用事件侦听器时
我有以下功能:Javascript 保持'的价值;这';使用事件侦听器时,javascript,jquery,this,event-listener,Javascript,Jquery,This,Event Listener,我有以下功能: onDocumentKeyUp: function (e) { if (e.keyCode === 27) { this.deactivate(); } } 我想这样把它绑起来: $(document).on('keyup', onDocumentKeyUp); 但是,当我这样做时,onDocumentKeyUp函数中的this会引用文档。我通过以下方式解决了这个问题: var self = this; $(document).on('keyup
onDocumentKeyUp: function (e) {
if (e.keyCode === 27) {
this.deactivate();
}
}
我想这样把它绑起来:
$(document).on('keyup', onDocumentKeyUp);
但是,当我这样做时,onDocumentKeyUp
函数中的this
会引用文档。我通过以下方式解决了这个问题:
var self = this;
$(document).on('keyup', function(e) { self.onDocumentKeyUp(e); });
这是可行的,但有些东西告诉我有一个更干净的方法来解决这个问题。会不会.call()
或.apply()
以某种方式..在这里应用?我仍然不确定这些函数到底是如何工作的
此外,我不必将自己限制在
jQuery.on()
。如果有一种“普通”的方法,请随意教我。请注意方法上的数据参数:
您还可以使用jQuery.proxy方法:
下面是JSFIDLE:您可以使用它来设置上下文(无需像call
或apply
那样立即调用它):
由于此方法仅受ES5.1兼容浏览器的支持,因此您可以使用它而不是填充它。您的意思是喜欢吗$(document.on('keyup',函数(e){onDocumentKeyUp.call(self,e);});可以,但我觉得不太干净。我想知道是否有一种干净、惯用的方法可以通过eventhandler传递这个值。
$(document).on('keyup', this.onDocumentKeyUp.bind(this));