0
對於嵌套級別最高的JSON對象,當深度克隆對象時,jQuery.extend()似乎比lodash克隆方法快得多。這兩種方法如何彼此不同,導致差異的原因是什麼?爲什麼jQuery.extend()比Lodash快.clone()
對於嵌套級別最高的JSON對象,當深度克隆對象時,jQuery.extend()似乎比lodash克隆方法快得多。這兩種方法如何彼此不同,導致差異的原因是什麼?爲什麼jQuery.extend()比Lodash快.clone()
jQuery.extend
沒有深入克隆。它只是將源對象的屬性複製到目標對象中。如果屬性是對象引用,它們也會被複制。這被稱爲淺拷貝。
如果您檢查每個對象,它可能看起來像一個深層複製,但屬性是對相同基礎對象的引用。
jQuery.extend
的deep
選項會導致合併,而不是複製,這意味着對象不會被覆蓋,而是將其屬性複製到其上。
有關詳細信息,請參閱文檔jQuery.extend
:
謝謝布蘭登。從原始數組中刪除條目時,引用會發生什麼?似乎仍然可以通過克隆訪問數據。垃圾收集器刪除數據還是會繼續存在?是時間問題了嗎? – bengro 2014-09-04 17:21:18
垃圾收集器可能會延遲刪除數據,但只有在引用消失時才能將其刪除,此時數據不可見。複製對象引用並將其從其他位置刪除不會刪除該對象。您現在可以再次查看同一個對象。 – Brandon 2014-09-04 18:15:36