# 深拷贝
# 定义
深拷贝就是来完完整整的拷贝的一个对象,嵌套对象,也会进入继续拷贝。
# JSON.stringify
通用于数组和对象。
var arr = [1, 2, 3];
var newArr = JSON.parse(JSON.stringify(arr));
var arr1 = [{a: 1}, {b: 2}];
var newArr1 = JSON.parse(JSON.stringify(arr1));
var obj = {a: 1, b: 2};
var newObj = JSON.parse(JSON.stringify(obj));
var obj = {a: {b: 2}, c: {d: 4}};
var newObj = JSON.parse(JSON.stringify(obj));
注意: JSON.stringify 有自己的特性(看 JSON.stringify 章节)。
# 实现一个深度拷贝
function deepCopy(obj) {
if (typeof obj !== 'object' && obj === null) return;
var newObj = obj instanceof Array ? [] : {};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
}
}
return newObj;
}