我应该总是删除EventListener吗?

时间:2015-04-05 15:21:46

标签: javascript events javascript-events

假设我在窗口中添加load事件,如下所示:

window.addEventListener("load",initialize);

我应该在事件被触发后从窗口中删除load事件监听器吗?它只发射一次,但在发生这种情况后会继续听吗?

这很简单:

function initialize(event_){
    /* Just by adding this line. */
    window.removeEventListener("load",initialize);
}

但这是否有点过分或者这实际上会对我的程序的性能有益吗?我只是问,因为"加载"事件只发射一次,所以如果它只是解决了它就会有意义。我从来没有听说过一个自我解决的倾听者,但是......有什么想法吗?

编辑:另外,我并不特别关注"加载"事件,只是侦听器继续侦听仅触发一次的事件的一般场景。

2 个答案:

答案 0 :(得分:3)

  

我应该在事件被触发后从窗口中删除load事件监听器吗?

我从未见过这样做过,所以我认为不需要它。

  

它只发射一次,但在发生这种情况后会继续听吗?

DOM只会触发一次,是的。但它会继续听,您可以轻松地手动触发load事件(有关示例,请参阅MDN)。

  

但这样做是否过分或者实际上是否有利于我的计划的表现?

通常它太过分了,因为这并没有太大的区别。当然,它可能会触发initialize上的垃圾收集,这可以节省一些内存(或更多,取决于您的代码结构),并通过将其提供给应用程序的其余部分来提高性能。

答案 1 :(得分:3)

window.addEventListener('load', initialize, {once: true});