DOM事件侦听器垃圾收集

DOM事件侦听器垃圾收集,dom,garbage-collection,event-listener,Dom,Garbage Collection,Event Listener,如果将事件侦听器附加到表的特定列中的每个单元格,然后从表中删除每一行,那么为了避免内存泄漏,开发人员是否有必要在删除行之前删除事件侦听器,或者浏览器是否会进行清理 编辑:Michael建议的文章说,事件委派比将侦听器直接绑定到表中的每个单元格执行得更好,但我不确定从垃圾收集的角度看是更好还是更好。请评论。从文章中: $('table').on('click', 'td', function () { $(this).toggleClass('active

如果将事件侦听器附加到表的特定列中的每个单元格,然后从表中删除每一行,那么为了避免内存泄漏,开发人员是否有必要在删除行之前删除事件侦听器,或者浏览器是否会进行清理

编辑:Michael建议的文章说,
事件委派
比将侦听器直接绑定到表中的每个单元格执行得更好,但我不确定从垃圾收集的角度看是更好还是更好。请评论。从文章中:

        $('table').on('click', 'td', function () {

            $(this).toggleClass('active');

        });
据说优于:

        $('table td').on('click', function () {

            $(this).toggleClass('active');

        });

Edit2:虽然也关注性能,但从垃圾收集的角度来看,当从一个大表中重复删除行,并且委托机制正在监听单元格单击时,会发生什么问题仍然存在。

我不确定,但我想这篇精彩的文章会把事情弄清楚(搜索“垃圾收集”):

我不太清楚,但我认为浏览器(JavaScript引擎)负责垃圾收集

据我所知,这种机制在新一代浏览器中是自动的

所以,流量是这样的

1. you create cells
2. you attach listeners
3. memory allocated
4. you remove cells
5. listeners becomes dangling
6. Garbage collector clears it
7. you are happy
此外,还有一些机制提供明确地清除它,搜索,因此,将有许多问题与之相关


但我也不确定!所以请等待专家给出可靠的答案

看看这可能会有帮助。感谢第一个mozilla链接和这个概述;我编辑了我的原始问题,特别强调了一个问题,即成千上万的单元格可能会有一个侦听器监听他们的点击事件;通过ajax XHR使用实时数据定期(比如每30秒)刷新我的表,从而删除以前的所有行。由于答案不包含任何实际信息,所以被否决,只是指向一个资源(将来某个时候可能会过时,完全使“答案”无效)。纠正这种情况的一种方法是保留与其他好文章的链接,即复制或综合文章中的论点,作为答案中的要点。