【问题标题】:Should I remove an element when it is out of viewport?当元素超出视口时我应该删除它吗?
【发布时间】:2015-10-21 05:10:22
【问题描述】:

当元素被翻译出视口并且不会再次进入时,我是否应该使用 jQuery(或纯 JS,如果这样更快)动态删除它?这会提高内存使用率或性能吗?或者我应该忽略它以被垃圾收集器删除,因为它做得最好(如果它本质上是这样做的)?

编辑:为了更清楚,这里有一个实用的解释:

假设我有 100 个圈子的 translateX 动画:

$("circle").each(function(i, el){
    $(el).animate({translateX: -100});
});

现在所有的圆圈都在视口之外(因为 SVG 的坐标系从左上角的 0,0 开始)。我的代码是否应该在其中删除,如下所示:

$("circle").each(function(i, el){
    $(el).animate({translateX: -100}, {complete: function()
    $(el).remove();
});
});

??

【问题讨论】:

  • 您是在画布或类似的视图空间上制作动画吗?
  • 在动画编码结束时添加.remove()会不会更容易?
  • 答案将取决于您是否尝试提高动画帧速率(可能不需要删除,因为浏览器无论如何都会排除它们)或内存使用情况(是的,如果它是长时间运行的动画或存在有很多圈子)。最靠谱的答案是自己试试看。

标签: javascript performance animation svg


【解决方案1】:

绝对是的!

垃圾收集器在幕后工作以处理释放您不再使用的对象的内存。但是除非你以某种方式让它离开(即告诉运行时系统你不再需要它),否则垃圾收集器只会在执行结束时处理它!

对于高级语言(例如 javascript)开发人员来说,这是一个非常棒的内存管理指南。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management

【讨论】:

    猜你喜欢
    • 2019-04-03
    • 2018-06-01
    • 1970-01-01
    • 2015-02-17
    • 2019-03-10
    • 1970-01-01
    • 2021-10-18
    • 2018-02-07
    相关资源
    最近更新 更多