深拷贝、浅拷贝、垃圾回收

182 阅读1分钟

深拷贝

对于简单类型的数据来说,赋值就是深拷贝。如下:

var a = 1
var b = a
b = 2 //这个时候改变 b,a 完全不受 b 的影响

对于复杂类型的数据(对象)来说,要区分浅拷贝和深拷贝。

浅拷贝

var a = {name: 'frank'}
var b = a
b.name = 'b'
a.name === 'b' // true   因为我们对 b 操作后,a 也变了

深拷贝--对 Heap 内存进行完全的拷贝

var a = {name: 'frank'}
var b = deepClone(a) // deepClone
b.name = 'b'
a.name === 'a' // true

垃圾回收

一个对象如果没有被被应用,那它就是垃圾,将会被回收,回收时间由浏览器决定。