如何使用事件监听器中使用的函数处理“this”上下文?

时间:2014-07-31 15:39:06

标签: javascript

我有一个构造的对象,它将点击和按键事件监听器应用于页面上的指定元素。

事件触发一个使用存储在对象中的数据的函数。

我需要能够使用"这个"关键字(当然?)但由于函数如何被称为"这个"关键字指向窗口对象。

为了解决这个问题,我有#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 );

基本上我想知道这是否是正确的做事方式?

0 个答案:

没有答案