深拷贝
对于简单类型的数据来说,赋值就是深拷贝。如下:
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
复制代码
垃圾回收
一个对象如果没有被被应用,那它就是垃圾,将会被回收,回收时间由浏览器决定。