对象的深拷贝
Posted Steven_YF
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象的深拷贝相关的知识,希望对你有一定的参考价值。
CSDN:https://blog.csdn.net/cc18868876837/article/details/114918262
掘金:https://juejin.cn/post/7207090090101866557#heading-16
function deepClone(obj,cloneObj)
var cloneObj = cloneObj || ;
for(let i in obj)
if(typeof obj[i] === \'object\' && obj[i] !== null)
cloneObj[i] = obj[i] instanceof Array ? [] : ;
deepClone(obj[i],cloneObj[i])
else
cloneObj[i] = obj[i];
return cloneObj;
只要思想不滑坡,办法总比困难多!
如何实现对象的深拷贝
对象的深拷贝,是指拷贝对象时拷贝的是对象的地址,新数据改变时,老数据也会被改变。
解决方式:利用for in将对象遍历,将值复制给新对象
例:
var obj1 = {
name:"admin"
}
var obj2 = {};
for(var i in obj1){
obj2[i] = obj1[i];
}
当需拷贝的对象为多层对象嵌套时,如:
var obj1 = {
name:{
name2:{
name3:{
name4:"admin";
}
}
}
}
仅靠for in已经不能实现对象的深拷贝了,此时可以将需拷贝的对象先转换为JSON,再将JSON数据转换为对象。
例:
var obj2 = JSON.parse(JSON.stringify(obj1))
以上是关于对象的深拷贝的主要内容,如果未能解决你的问题,请参考以下文章