我有一个JavaScript中的eventlisteners问题,可能是由于我对语言的不完全控制。Javascript:与“this” - 关键字与事件监听器的问题
我希望使用addEventListener()/ attachEvent()注册事件侦听器;我也希望能够在稍后删除监听器,所以我不能注册匿名函数。
说我现在想注册一个对象的方法作为一个事件监听器。首先我预计addEventListener(event, node, object.method)
工作。但是,在阅读完事件后,我现在明白this
关键字将在调用事件侦听器时引用事件目标,而不是我的对象。
要解决这个问题,我创建了一个新的方法,对象的methodCallback,就像这样:
object.methodCallback = function() {
self.method();
}
的self
变量被设置在对象的构造函数来复制this
。然后,我将object.methodCallback注册为eventlistener。
我觉得这一定是错误的做法。但是,正确的方法是什么?
我道歉,如果这个问题是很常见的,但我一直没能找到有关SO到目前为止
会[帮助](http://stackoverflow.com/questions/337878/js-var-self-this)有帮助给你? –
是的,在其他人看来,其他人最初也觉得这有点尴尬。谢谢! – Mansiemans