js浅拷贝深拷贝
对于想要复制的对象,如果对象里面对应的值都是基本数据类型的,可以直接复制 也就是通过浅拷贝复制。如果对应的值有对象那么浅拷贝是行不通的。会造成数据污染。下面介绍浅拷贝与深拷贝实现方法。
1.浅拷贝
let tem={
a:"1",
b:2
}
let copy={};
for(let key in tem){
copy[key]=tem[key]}
2.通过object.assign方法浅拷贝。
let tem={
a:"1",
b:2
}
let copy={};
Object.assign(copy,tem,.....)
3.深拷贝
let tem={
a:"1",
b:2,
c:['1','2','3'],
d:{g:"xxx",re:{x:"xxx"}}
}
//用于判断当前属性值是否是对象
function isObj(obj) {
return obj instanceof Object;
}
//这里是对象深拷贝方法
function deepCopy(fromObj,toObj) {
for(let key in fromObj){
let fromValue=fromObj[key]
if(!isObj(fromValue)){
toObj[key]=fromValue
}else{
let temObj=new fromValue.constructor;
deepCopy(fromValue,temObj);
toObj[key]=temObj
}
}
};
let copy={};
deepCopy(tem,copy);