【问题标题】:Why is jQuery.extend() faster than Lodash .clone()为什么 jQuery.extend() 比 Lodash .clone() 快
【发布时间】:2014-09-03 22:06:19
【问题描述】:

对于嵌套级别高达 for 的非常大的 JSON 对象,在深度克隆对象时,jQuery.extend() 似乎比 lodash clone 方法快得多。这两种方法有何不同,是什么导致了差异?

【问题讨论】:

    标签: javascript jquery lodash


    【解决方案1】:

    jQuery.extend 不进行深度克隆。它只是将属性从源对象复制到目标对象。如果属性是对象引用,它们也会被复制。这称为浅拷贝。

    如果您检查每个对象,它可能看起来像一个深层副本,但属性是对相同底层对象的引用。

    jQuery.extenddeep 选项会导致合并,而不是复制,这意味着对象不会被覆盖,而是会将其属性复制到其中。

    有关详细信息,请参阅jQuery.extend 的文档:

    http://api.jquery.com/jquery.extend/

    【讨论】:

    • 谢谢布兰登。从原始数组中删除条目时,引用会发生什么?似乎仍然可以通过克隆访问数据。垃圾收集器删除数据只是时间问题,还是它们会继续存在?
    • 垃圾收集器可能会延迟删除数据,但只有在引用消失时才能删除它,此时数据是不可见的。复制对象引用并将其从其他位置删除并不会删除该对象。您现在有了对同一对象的另一个引用。
    猜你喜欢
    • 2014-03-18
    • 2019-11-02
    • 2015-07-24
    • 1970-01-01
    • 2019-04-18
    • 2014-07-06
    相关资源
    最近更新 更多