1.深拷贝
简单来说,简单类型赋值的 =
号、对象中b变a不变。
var a=1
var b = a
b = 2
console.log(a) //1
console.log(b) //2
复杂类型中,深拷贝是在Heap中新建了一个内存块,将新的地址赋值给新的变量,所以a和b不会相等。
var a = {n : 1}
var b = {n : 1};
b.n = 2
console.log(a.n) //1【深拷贝】
2.浅拷贝
简单来说,浅拷贝就是复杂对象中,b变导致a变。
由于没有在Heap中新建一个内存块,所以赋值的地址不变。b变化的同时a也跟着变化。
var a = {n : 1}
var b = a
b.n = 3
console.log(a.n) //3 【浅拷贝】
网友评论