私はes6クラスで遊んでいて、簡単なマウスクラスを設定しようとしました。javascript removeEventListenerがクラス内で動作しない
addEventListener
が動作しますが、何らかの理由でremoveEventListener
で削除できません。私はこれがコンテキストバインディングと関係があると推測していますが、これを修正する方法を理解することはできません。
'use strict'
class Mouser {
constructor() {
this.counter = 0
this.clicked = function (event) {
this.counter++
console.log('clicks:', this.counter)
if (this.counter >= 10) this.remove()
}
window.addEventListener('click', this.clicked.bind(this))
}
remove() {
console.log('Removing click listener') // this line runs ..
window.removeEventListener('click', this.clicked.bind(this))
}
}
var mouse = new Mouser()
ああ感謝:
はここでそれを行うために一つの方法です!バインディングは本当に私を悩ましていた.. – peonicles
ありがとう!私はReactを使用していましたが、これは私に多くの場所でbind(this)を使用させ、それは本当に私を困らせました。 – DougieHauser
ありがとう、ありがとう! –