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