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

标签 javascript createjs arrow-functions

<分区>

我用的是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");

关于javascript - createjs off() 函数从 js 箭头函数中删除监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58975842/

相关文章:

JavaScript:返回对象的多行箭头函数

javascript - Chart.js 版本 3 - 如何制作重叠条形图?

javascript - Chrome 扩展程序弹出窗口不起作用,点击事件未处理

javascript - Animate CC 中的 CreateJS JavasScript 框架脚本

javascript - 如何将数组的键分配为函数的参数?

javascript - 什么时候应该在 ES6 箭头函数中使用 return 语句

javascript - Netscape 7.0+ 设置 HTML DOM 节点文本 (ECMAScript 3)

javascript - 重置 d3 forceSimulation 中的所有隔离力

javascript - 如何将 svg 转换为 createjs.Graphics?

javascript - CreateJS - 缩放 Canvas 不会缩放鼠标坐标