gpt4 book ai didi

javascript - 在 ES6 中添加和删除事件和方法

转载 作者:行者123 更新时间:2023-11-30 08:27:34 25 4
gpt4 key购买 nike

在 ES6 类中,如果我像这样添加和删除事件:

viewer.addEventListener(
SELECTION_CHANGED_EVENT,
(e) => this.onFoo(e));

viewer.removeEventListener(
SELECTION_CHANGED_EVENT,
(e) => this.onFoo(e));

添加了事件,但没有删除,但是如果像这样添加事件:

在构造函数中:

   this.onFooHandler = (e) => this.onFoo(e);

并添加和删除它们:

viewer.addEventListener(
SELECTION_CHANGED_EVENT,
this.onFooHandler);

viewer.removeEventListener(
SELECTION_CHANGED_EVENT,
this.onFooHandler);

它们的添加和删除都很好,但这是为什么呢?有什么区别?

注意事项:

我使用 Babel 来转译代码。

viewer 是一些具有事件的对象。

最佳答案

您需要将您在addEventListener 中注册的确切的回调函数再次传递给removeEventListener。它必须是确切的函数,而不仅仅是看起来像的函数。因为您使用的是匿名回调,所以每个函数都是不同的函数。如果您只创建一次函数并将其分配给一个变量,那么您在两种情况下都使用相同的函数。

关于javascript - 在 ES6 中添加和删除事件和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43042613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com