總結js深拷貝和淺拷貝


概念理解

淺拷貝就是將一個對象(或數組)的內存地址『編號』復制給另一個對象(或數組)
===>理解為淺拷貝只復制指向某個對象的指針,而不復制對象本身,新舊對象還是共享同一塊內存
深拷貝就是增加一個指針,並且申請一個新的內存地址,使這個增加的指針指向這個新的內存,然后將原變量對應內存地址里的值逐個復制過去
===>深拷貝會另外創造一個一模一樣的對象,新對象跟原對象不共享內存,修改新對象不會改到原對象

實現方案

jquery 有提供一個$.extend可以用來做 Deep Copy

var $ = require('jquery');
var obj1 = {
    a: 1,
    b: { f: { g: 1 } },
    c: [1, 2, 3]
};
var obj2 = $.extend(true, {}, obj1);
console.log(obj1.b.f === obj2.b.f);
// false`
####lodash
`var _ = require('lodash');
var obj1 = {
    a: 1,
    b: { f: { g: 1 } },
    c: [1, 2, 3]
};
var obj2 = _.cloneDeep(obj1);
console.log(obj1.b.f === obj2.b.f);
// false


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM