假设我的文档中有一个元素数组,这些元素是单个对象的子元素。这些元素中的每个元素都使用不同的参数注册一个新的事件侦听器。如果放弃父对象,是否需要手动注销所有eventListeners?或者,当我从DOM中删除元素时,浏览器会跟踪所有事件侦听器并丢弃它们吗?我问这个问题的原因是,跟踪所有事件,然后调用removeEventListener看起来浏览器应该足够智能来解决这个问题,但我担心如果我不这样做,我会泄漏内存。
例如:
var elements = parent.childNodes;
var listeners = [];
for (var i = 0; iand later:
for (var i = 0; iWhat's the typical approach? I realize a simple way would be to store the event listener reference on the element itself, but I wonder if modifying the type of the element is going to cause extra performance issues?
发布于 2014-10-19 00:48:40
在现代浏览器中,在从DOM中删除元素之前,不需要删除事件侦听器。如果在javascript中的其他地方没有对特定DOM元素的直接引用(例如,存储在JS变量中的DOM元素引用),那么DOM元素将在移除后被垃圾回收。
DOM GC非常聪明,它知道一旦从DOM中删除DOM元素,事件侦听器就不会被视为对该元素引用(因为从DOM中删除时不会发生DOM事件)。
https://stackoverflow.com/questions/26442041
复制相似问题