我有一個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