这会导致内存泄漏吗?

问题描述 投票:0回答:1

考虑以下两种在 jQuery 中执行相同操作的方法:

// Approach 1
const $element = jQuery(...); 
$element.on('click', () => { 
    $element.addClass('ok');
});
// Approach 2
const $element = jQuery(...); 
$element.on('click', (evt) => { 
    const $element = jQuery(evt.currentTarget); 
    $element.addClass('ok');
});

如果稍后在代码中的其他地方调用

$element.destroy()
,这些方法中的任何一个是否会导致内存泄漏(或者这两种方法中的任何一个更有可能导致内存泄漏)?

如果我理解正确,

$element.destroy()
方法也应该销毁元素上的事件侦听器,并且我认为如果调用
destroy
,则不会发生内存泄漏。

另一方面,如果没有调用

destroy
,只会从 dom 中删除 $element (比如说,销毁它的一个父元素并用另一个元素替换它),会发生什么?

jquery memory-leaks
1个回答
0
投票

如果您使用

.html
.empty
.remove
来“销毁”元素,jQuery 将在内部删除该元素及其子元素的所有数据和事件侦听器,以防止此类内存泄漏。

© www.soinside.com 2019 - 2024. All rights reserved.