核心代码
* 深拷贝
* @param {*} obj 要拷贝的对象
* @returns
*/
function deepCopy(xobj){
//如果是值类型直接返回
if(typeof(xobj)!='object'||xobj==null){
return xobj
}
let result
//初始化判断要拷贝数组还是对象
if(xobj instanceof Array){
result=[]
}else{
result={}
}
// 遍历要拷贝的对象递归找到值类型返回
for(let key in xobj){
if(xobj.hasOwnProperty(key)){
result[key]=deepCopy(xobj[key])
}
}
return result
}
测试
let targetObj={
name:"zhangsan",
age:17,
like:["读书","跑步"],
test:{
name:"test",
like:["test1","test2"],
obj:{
name:"test"
}
}
}
let obj=deepCopy(targetObj)
obj.age=18
console.log(targetObj.age)