分离div并附加它会增加内存吗?

Mar*_*ton 1 javascript jquery

我想知道如果在加载时分离div并在单击上附加相同的div会增加内存吗?分离div(填充图像)时div和图像信息是否保存在内存中?

例如:

<div class="divContain-one">
 <img src="test.png">
</div>

<div class="divContain-two"></div>

 var divContainingImage = $("#divContain-one").detach();

$("button").click(function(){
      $("#divContain-two").append(divContainingImage);
});
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 5

它不应该显着增加内存使用量.该变量在分离之前只包含对包含DOM元素的相同内存的引用,以及任何相关的jQuery数据.所有发生的事情是DOM本身不再具有对该内存的引用.

附加它时,也不会增加内存.它只是将同一对象的引用添加到DOM中的新位置,它不会复制.

信息必须保存在内存中 - 当你追加时,它怎么知道添加到DOM的内容呢?

一个警告:调用行为$("#divContainingImage")创建一个包装DOM元素的jQuery对象,该变量包含对该对象的引用,而不仅仅是DOM元素.这确实增加了内存使用量,与此无关.detach().

  • @Tamango它们在分离之前使用的内存相同.因此,如果他在DOM中有一百万个元素并将它们分离,则内存不会因分离而增加.但它也没有减少,因为有些变量使它们不被GC化. (2认同)