js递归实现深拷贝
function deepCopy(obj,newObj) {
for(var key in obj){
if(obj.hasOwnProperty(key)){
var objValue = obj[key];
if(!(objValue instanceof Object)){
newObj[key] = objValue;
}else{
var temp = new objValue.constructor;
//递归,一直到最后一层也是值类型
deepCopy(objValue,temp);
newObj[key] = temp;
}
}
}
}
var obj = {
num : 10,
str : 'string',
arr : [1,2,3,4],
arr2 : {a:'1'}
};
var newObj = {};
deepCopy(obj,newObj);
obj.arr[0] = 1000;
obj.arr2.a = '2';
console.log(newObj);
console.log(obj);
结果
在这里插入图片描述