Js的深拷贝与浅拷贝
浅拷贝:
var arr1=[{name:zhang}]
var arr2=[]
arr2=arr1
这时候arr2的数据和arr1是一样的,这时如果把arr2中的name改变,这arr1的也会发生改变
深拷贝:
//深拷贝
function copy(obj) {
let objcopy = Array.isArray(obj) ? [] : {};
if (obj && typeof obj === "object") {
for (key in obj) {
if (obj.hasOwnProperty(key)) {
//判断ojb子元素是否为对象,如果是,递归复制
if (obj[key] && typeof obj[key] === "object") {
objcopy[key] = copy(obj[key]);
} else {
//如果不是,简单复制
objcopy[key] = obj[key];
}
}
}
}
return objcopy;
}
arr2=copy(arr1)
这个时候两个数组数据都是独立存在的了不会受一方影响