ES5中,使用concat
const a1 = [1, 2];
const a2 = a1.concat();
a2[0] = 2;
a1 // [1, 2]
ES6使用扩展运算符(…)三个点就可以快速实现
const a1 = [1, 2];
// 写法一
const a2 = [...a1];
// 写法二
const [...a2] = a1;
使用递归深拷贝
function deepCopy(obj) {
var objArray = Array.isArray(obj) ? [] : {};
if(obj && typeof obj === "object") {
for(key in obj) {
if(obj.hasOwnProperty(key)){
if(obj[key] && typeof obj[key] === "object"){
objArray[key] = deepCopy(obj[key]);
} else {
objArray[key] = obj[key];
}
}
}
}
return objArray;
}