javascript - 如何使用 .bind(this) 删除对象的事件监听器?

标签 javascript event-handling dom-events

<分区>

内部对象构造函数:

this.notification.addEventListener(barcodeScanner.NEW_READING, this.handleBarcode.bind(this));

当它破坏时:

this.notification.removeEventListener(barcodeScanner.NEW_READING, this.handleBarcode.bind(this), this);

我可以添加事件监听器并正常工作,但我无法在对象销毁时删除单个事件监听器。

虽然和问题关系不大,但是我用的是EventDispatcher.js和Class.js。

我可以修改 EventDispatcher.js 中的代码以满足我的需要。但是,如何在不删除所有其他监听器的情况下删除对象函数的事件监听器?

最佳答案

它没有被删除,因为它是一个不同对象。

.bind() 每次都返回一个新对象。

您需要将其存储在某处并使用它来删除:

var handler = this.handleBarcode.bind(this);

然后

this.notification.addEventListener(barcodeScanner.NEW_READING, handler);

this.notification.removeEventListener(barcodeScanner.NEW_READING, handler);

关于javascript - 如何使用 .bind(this) 删除对象的事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28665784/

相关文章:

javascript - 如何反转字符串并将最后一个字母设置为小写

javascript - Three.js-闪光灯 "Ring"效果

javascript - 如何在测试中使用 element.val 更新绑定(bind)到输入集的 angularjs 组件属性

.net - 如何使单个事件处理程序处理ALL Button.Click事件?

javascript - 从内部外部函数中删除监听器

javascript - 如何在 Window.Blur () 事件上创建事件监听器?

javascript - 在 JS 幻灯片中单击图像时转到其他 URL 和 anchor

javascript - 通过 AJAX 加载 javascript 元素

java - 设置 Spinner 的事件处理程序时出现 NullPointerException

java - 将事件/回调绑定(bind)到 Java 中的关键字