JS深拷贝和浅拷贝(201903090219-----64)
javascript吧
全部回复
仅看楼主
level 5
1.浅拷贝只是拷贝一层, 更深层次对象级别的只拷贝引用.
2.深拷贝拷贝多层, 每一级别的数据都会拷贝.
3.Object.assign(target, ...sources) es6 新增方法可以浅拷贝
Object.assign(目标对象,被拷贝的对象)
function deepCopy(newobj,oldobj){
for(var k in oldobj){
if(oldobj[k] instanceof Array){
newobj[k]=[];
deepCopy(newobj[k],oldobj[k]);//判断某一个属性的值是不是对象或者数组,是的话再调用这个函数进行更深一层次的拷贝,数组要写在对象前面,因为数组也属于对象,如果对象写在前面,就会把数组拷贝成对象的形式。
}else if(oldobj[k] instanceof Object){
newobj[k]={};
deepCopy(newobj[k],oldobj[k]);
}
else{
newobj[k]=oldobj[k];
}
}
}
2021年12月16日 04点12分 1
level 1
深拷贝那个函数真的比较重要,用到了递归
2021年12月16日 04点12分 2
1