gpt4 book ai didi

DOM 事件监听器垃圾回收

转载 作者:行者123 更新时间:2023-12-02 05:03:08 25 4
gpt4 key购买 nike

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

编辑:迈克尔建议的文章说 event delegation比将监听器直接绑定(bind)到表中的每个单元格执行得更好,但我不确定从垃圾收集的角度来看它是否更好,或者只是执行得更好。请给出意见。来自文章:

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

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

});

据说优于:
        $('table td').on('click', function () {

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

});

Edit2: 和 jQuery documentation of .on() and event delegation还关注性能,但是从垃圾收集的角度来看,当从一个大表中重复删除行并且委托(delegate)机制正在监听单元格单击时会发生什么的问题仍然存在。

最佳答案

我不确切知道,但我认为浏览器(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

还有一些机制提供明确清除它,搜索SO,会有很多与此相关的问题

但我又不确定!所以等待专家提出可靠的答案

关于DOM 事件监听器垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14359962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com