有一个棘手的问题。我想使用addEventListener和removeEventListener,使用已注册的非匿名函数。我不想使用匿名函数,因为我想明确地破坏我首先注册的事件监听器:
window.addEventListener('keyup', myFunction, false);
window.removeEventListener('keyup', myFunction, false);
像魅力一样,但问题出现了: 我在一个类里面,在 myFunction 里面我想调用类成员和一些类方法,通常绑定到 this ,但是嘿 - 在addEventListener里面-method,此绑定到 window 。将class-this绑定到函数(例如myFunction.bind(this)等)的每次尝试都不成功。那么如何访问类范围呢?
class myClass {
myMethod(args) {
console.log('you got them superior coding skillz');
}
myCallback(e) {
var key = e.keyCode ? e.keyCode : e.which;
if(key === 27) {
this.myMethod(args);
}
}
listeners(addListener) {
if(addListener === true) {
window.addEventListener('keyup', this.myCallback, false);
}
else {
window.removeEventListener('keyup', this.myCallback, false);
}
}
}
谢谢你们的帮助!非常感谢。
答案 0 :(得分:0)
看起来应该是这样的:
window.addEventListener('keyup', this.myCallback.bind(this), false)