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");
我使用了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");