在日常的业务过程中我们常常会遇到对象的复制,在js中对象的复制有浅拷贝和深拷贝的方式进行赋值
1.浅拷贝
(1)等号赋值的方式
(2) 通过Object.assgin(目标对象,源对象)
当对象只有一层的时候实现的是对象的深拷贝
(3)数组的slice()和concat()
(4) …展开运算符
2 深拷贝
(1)JSON
项目中常见的深拷贝就是运用JSON对象进行 JSON.parse(JSON.stringify(原对象))进行拷贝 这种深拷贝不能实现属性为function的拷贝 对于日常开发过程中不涉及发布订阅模式的拷贝是可以满足需求的
(2)递归实现
function deepCopy(targetObject,orginObject){
for(const key in orginObject){
item=orginObject[key]//原对象中的值
if(item instanceof Array){//值为数组则目标对象对应的值也为数组 然后遍历原对象对应的数组
targetObject[key]=[]
deepCopy( targetObject[key],item)
}else if(item instanceof Object){
targetObject[key]={}
deepCopy( targetObject[key],item)
}else{
targetObject[key]=item//将对应的key值的源对象中的值赋值给目标对象
}
}
}