数组中的slice() & concat() 还有…扩展运算符均为浅拷贝方法
深拷贝如下:
// 深层递归
var array = [
{ name: 1 },
{ name: 2, age: { age: "1qwe" } },
{ name: 3 }
];
function copy(obj) {
var newArr = obj.constructor === Array ? [] : {};
if (typeof obj !== 'object') {
return;
}
for (var i in obj) {
newArr[i] = typeof obj[i] === 'object' ? copy(obj[i]) : obj[i];
}
return newArr
}
var new_arr = copy(array)
new_arr[0].name = 111;
new_arr[1].age.age = 2211112;
console.log(array);
console.log(new_arr);