Javascript 如何删除类中的eventListener?
我已尝试了以下两个版本,但无法删除mousemove eventListener。我认为我对类内部作用域的理解有限导致了一些混乱,但我认为这应该是可行的Javascript 如何删除类中的eventListener?,javascript,class,ecmascript-6,Javascript,Class,Ecmascript 6,我已尝试了以下两个版本,但无法删除mousemove eventListener。我认为我对类内部作用域的理解有限导致了一些混乱,但我认为这应该是可行的 export class Line extends Graphic { constructor() { super() } handleMouseMoveWhileDrawing(e) { console.log(e); } stopDrawing() { document.removeEvent
export class Line extends Graphic {
constructor() {
super()
}
handleMouseMoveWhileDrawing(e) {
console.log(e);
}
stopDrawing() {
document.removeEventListener('mouseup', this.stopDrawing)
document.removeEventListener('mousemove', this.handleMouseMoveWhileDrawing)
}
startDrawing() {
document.addEventListener('mousemove', this.handleMouseMoveWhileDrawing)
document.addEventListener('mouseup', this.stopDrawing)
}
}
new Line().startDrawing()
任何帮助都将不胜感激。@epascarello将我推向了正确的方向 将回调传递给eventListener时,此参数将自动设置为eventListener附加到的DOM元素。因此,stopDrawing方法内的this.handleMouseMoveWhileDrawing返回未定义 我可以通过使用.bind覆盖stopDrawing方法中的this来解决此问题:
问题是,到底是什么东西不适合您的代码?
export class Line extends Graphic {
constructor() {
super()
this.handleMouseMoveWhileDrawing = function(e) {
console.log(e);
}
}
stopDrawing() {
document.removeEventListener('mouseup', this.stopDrawing)
document.removeEventListener('mousemove', this.handleMouseMoveWhileDrawing)
}
startDrawing() {
document.addEventListener('mousemove', this.handleMouseMoveWhileDrawing)
document.addEventListener('mouseup', this.stopDrawing)
}
}
new Line().startDrawing()
document.addEventListener('mouseup', this.stopDrawing.bind(this))