数组,对象的深拷贝 与 浅拷贝

浅拷贝: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

 

posted @ 2019-10-16 11:26  敲代码的树先生  阅读(214)  评论(0编辑  收藏  举报