浅拷贝:Object.assign()
let arr1 = [1,23,54] let arr2 = Object.assign(arr1) console.log(arr1 === arr2) //result : true let obj1 = {a:1} let obj2 = Object.assign(obj1) console.log(obj1 === obj2) // result : true
深拷贝 JSON.parse( JSON.stringify( ) )
let arr1 = [1,54,62,7] let arr2 = JSON.parse(JSON.stringify(arr1)) console.log(arr1 === arr2 ) //result :false let obj1 = {a:1} let obj2 = JSON.parse(JSON.stringify(obj1)) console.log(obj1 === obj2) // result : false
深拷贝 扩展运算符 (...)
在使用扩展运算符 来进行深拷贝,需要注意的是 扩展运算符 只深拷贝 一维数组 和 对象 (意思就是里面不能套其他的数组或对象)
let arr1 = [1,53,58,4] let arr2 = [...arr1] console.log(arr1 === arr2) // result : false let obj1 = {a:1,b:2} let obj2 = {...obj1} console.log(obj1 === obj2) //result : false
下面 举例 不可深拷贝 的情况
let arr1 = [1,53,5,[2,3]] let arr2 = [...arr1] console.log(arr1 === arr2) //result : false //但是这里 有一个情况存在 console.log(arr1[3] === arr2[3]) // result : true