假设我在窗口中添加load
事件,如下所示:
window.addEventListener("load",initialize);
我应该在事件被触发后从窗口中删除load事件监听器吗?它只发射一次,但在发生这种情况后会继续听吗?
这很简单:
function initialize(event_){
/* Just by adding this line. */
window.removeEventListener("load",initialize);
}
但这是否有点过分或者这实际上会对我的程序的性能有益吗?我只是问,因为"加载"事件只发射一次,所以如果它只是解决了它就会有意义。我从来没有听说过一个自我解决的倾听者,但是......有什么想法吗?
编辑:另外,我并不特别关注"加载"事件,只是侦听器继续侦听仅触发一次的事件的一般场景。
答案 0 :(得分:3)
我应该在事件被触发后从窗口中删除load事件监听器吗?
我从未见过这样做过,所以我认为不需要它。
它只发射一次,但在发生这种情况后会继续听吗?
DOM只会触发一次,是的。但它会继续听,您可以轻松地手动触发load
事件(有关示例,请参阅MDN)。
但这样做是否过分或者实际上是否有利于我的计划的表现?
通常它太过分了,因为这并没有太大的区别。当然,它可能会触发initialize
上的垃圾收集,这可以节省一些内存(或更多,取决于您的代码结构),并通过将其提供给应用程序的其余部分来提高性能。
答案 1 :(得分:3)
window.addEventListener('load', initialize, {once: true});