浅拷贝方式:Object.assign({},拷贝对象 )
示例:
//初始对象obj
let obj={a:1,b:2}
//通过浅拷贝来拷贝初始对象obj到新对象newObj中
let newObj=Object.assign({},obj )
深拷贝方式:JSON.parse(JSON.stringify(obj))
示例:
//初始对象obj
let obj={a:1,b:1}
//通过深拷贝来拷贝初始对象obj到新对象newObj中
let newObj=JSON.parse(JSON.stringify(obj))
为什么要用到深拷贝?
js变量类型:
值类型:number,boolean,string,undefined,Symbol
引用类型:Object和它的子类型例如Array,Set,Map等等
特殊的引用类型:null,Function
值类型的数据是存储在栈内存中,引用类型是存储在堆内存中
对于栈存储的数据,我们获取直接通过浅拷贝赋值只是获取这个数据的指针,并没有改变或增加了一个数据,所以想保留想通过赋值的新旧两个对象互不影响就需要通过深拷贝赋值。