多次添加同一个 eventListener 的后果

Consequence of adding the same eventListener multiple times

背景: 我有一个遗留项目,我的任务是调试和修改。预算非常低,不允许进行重大重构。我正在慢慢地研究代码并遇到许多可能的问题 and/or 效率低下。

问题:多次添加同一个eventListener会有什么后果?它会覆盖现有的 eventListener 吗?这只是效率低下的问题吗?

有一个调用非常频繁的例程,它添加了 eventListeners。我放入了一个跟踪语句来确认 eventListener 冗余。

trace("*** already has eventListener", tempEventButton.hasEventListener("eventClicked"));

根据 Event Dispatcher class 上的官方 Actionscript 3.0 参考:

Keep in mind that after the listener is registered, subsequent calls to addEventListener() with a different type or useCapture value result in the creation of a separate listener registration.

这意味着,如果您不使用不同的类型或 useCapture 注册相同的侦听器(传递给 addEventListener 的函数),则不会创建新的 eventListener。

问题是,与执行检查以确保此事件的 addEventListener() 仅被调用一次相比,事件调度程序执行此检查的成本是否更高。无需调用 hasEventListener() 来执行此检查,您可以标记监听器已添加到 Boolean 中,这不会是一项非常昂贵的检查。