我想使用本地胖箭头将 this 上下文保留为:
document.addEventListener("keydown", (e: KeyboardEvent) => myobject.keyDownlistener(e));
我希望能够稍后删除此监听器,但以下均无效:
document.removeEventListener("keydown", (e: KeyboardEvent) => myobject.keyDownlistener(e));
document.removeEventListener("keydown", myobject.keyDownlistener);
我能做什么?
最佳答案
每次创建 ()=>
时,都会创建一个新函数。因此,您需要确保添加和删除相同的功能:
// What you add
document.addEventListener("keydown", myobject.keyDownlistener);
// Is what you should remove
document.removeEventListener("keydown", myobject.keyDownlistener);
要保留
this
上下文,请确保将 myobject.keyDownlistener
定义为粗箭头(而不是原型(prototype)函数)更多的
https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html
关于TypeScript:删除本地粗箭头的监听器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38213820/