数组的浅拷贝:
var arr = [1,2,3];
var newArr = arr;
newArr[0] = 4;
console.log(arr + ‘##’ + newArr); //输出[4,2,3]和[4,2,3]
解释:这种方式实际上只是新数组对原数组的一个引用,更改数组元素会对原数组产生影响,称为浅拷贝
数组的深拷贝:
方法一:使用slice
var arr = [1,2,3];
var newArr = arr.slice(0);
方法二:使用concat
var arr = [1,2,3];
var newArr = arr.concat();
对象的深拷贝:
使用for in循环和递归函数
var deep = function(obj){
var result = {};
for(var key in obj){
result[key] = typeof obj[key] === ‘object’ ? deep(obj[key]) : obj[key];
}
return result;
}