我有一个构造的对象,它将点击和按键事件监听器应用于页面上的指定元素。
事件触发一个使用存储在对象中的数据的函数。
我需要能够使用"这个"关键字(当然?)但由于函数如何被称为"这个"关键字指向窗口对象。
为了解决这个问题,我有#34;处理程序"保存在我的对象中,引用函数并将.bind(this)应用于它们。
this.handlers = {
inputMouseMoveHandler: this.inputMouseMove.bind( this ),
inputDownHandler: this.inputDown.bind( this ),
inputUpHandler: this.inputUp.bind( this )
}
然后我可以使用remove并在其上添加事件侦听器,同时保持指向我的对象的上下文。
document.addEventListener( "mousemove", this.handlers.inputMouseMoveHandler );
document.addEventListener( "keydown", this.handlers.inputDownHandler );
document.addEventListener( "keyup", this.handlers.inputUpHandler );
和
document.removeEventListener( "mousemove", this.handlers.inputMouseMoveHandler );
document.removeEventListener( "keydown", this.handlers.inputDownHandler );
document.removeEventListener( "keyup", this.handlers.inputUpHandler );
基本上我想知道这是否是正确的做事方式?