什么是浅拷贝?
简单点,直接上代码:
obj1={a:1}
let obj2 = obj1 //obj2={a:1}
obj2.a = null //b={a:null}
console.log(obj1,obj2)
输出(obj1={a:null} , obj2={a:null})
上面的示例是典型的浅拷贝,按道理说改变obj2的值后,obj1是不会跟着一起改变的;但结果就是obj2改变obj1也跟着变了,这就是浅拷贝。
什么是深拷贝?
简单点,继续上代码:
obj1={a:1}
let obj2 = JSON.stringify(obj1) //转成字符串在赋值
obj3 = JSON.parse(obj2) //将转换而来的字符串转换为原生js对象
obj3.a=null
console.log(obj1,obj3)
输出(obj1={a:1} , obj3={a:null})
上面的示例是典型的深拷贝,同样是被赋予同样的值,这个改变obj3就不会改变obj1了;
小节:
看到这里也就不用再说解决办法了,深浅拷贝你都已经理解了,了解底层原理戳这里深浅拷贝,相互转换还不是分分钟的事了,希望可以帮助到你!