createjs off() 函数从 js 箭头函数中删除监听器

createjs off() function to remove listener from js arrow function

我使用了createjs的on()函数:

myObj.on("mousedown", (e)=>{
    this.myObjMouseDown(e);
});

现在,我想删除侦听器,我尝试使用 off() 函数编写这段代码:

myObj.off("mousedown", (e)=>{
    this.myObjMouseDown(e);
});

但是,代码似乎无法正常工作。

取消活动应该怎么写?

注意:请注意,我需要使用箭头函数,因为 "this"。

您必须传递对同一函数的引用——但重要的是要注意 on 方法无论如何都会为您创建一个包装函数,因为它还允许您传递一个范围参数。 on/off 方法专门用于解决 ES5 中的作用域问题。 (docs)

确保您可以退订的最佳方法是存储对 on 函数调用值的引用,并将其传递给 off()

var evt = obj.on("click", () => doSomething());
// later
obj.off("click", evt);

另一种取消事件的好方法是在函数回调中删除它们:

doSomething(evt) {
    // Your Code
    if (condition) {
        evt.remove();
    }
}

最后,如果您只是想进行清理,请使用 removeAllEventListeners (docs),您可以将可选的事件类型传递给它。

obj.removeAllEventListeners("click");