深拷贝和浅拷贝
2019-03-26 本文已影响0人
小丸子超级可爱
参考连接
eg:
let a = 1
let b = a

当把a赋值给b的时候,会开辟新的内存空间,所以互相不影响。

eg:
let arr = [1,2,3]
let arr2 = arr
arr[0] = 5
arr2 = [5,2,3]

arr改变的时候arr2也跟着改变了,这就是浅拷贝,互相不影响的就叫深拷贝,当然上面的基本类型也互不影响,但是深拷贝浅拷贝一般针对引用类型

引用类型赋值只是赋值了内存地址,然后每个内存地址对应不同的房间,现在两个数组指向同一个房间,那么房子里面更改了数据,那么两个数组都变了,因为指向的是同一个房间,这就是浅拷贝
那么深拷贝就是,把内存地址跟房间都复制一遍,各自指向各自的,互相不影响,因为改的是各自的房间

深拷贝的方法是JSON对象的parse和stringify。slice,concat都不能做深拷贝