深拷贝和浅拷贝的区别

深拷贝和浅拷贝的区别

用自己的语言描述就是 是不是真正获取了一个对象复制的实体,而不是引用
假设现在有俩个数组A 和B

var a = {
    myname: 'yana'
};
var b = a;
b.myname = '小雅';
console.log(b.myname);    // 小雅
console.log(a.myname);    // 小雅


var a = ['myname', 'yana'];
var b = a;
b[1] = '小雅';
console.log(a);    // ["myname", "小雅"]
console.log(b);    // ["myname", "小雅"]

可以看出,对于对象或者数组类型,我们将a赋值给b,然后更改b中的属性,a也会随着变化,也就是其实这俩指向了同一块内存,所以修改其任意的值,另一个值都会随之变化,这就是浅拷贝。。
说明浅拷贝,拿人手短

刚刚我们了解了什么是浅拷贝,那么相应的,如果给b放到新的内存中,将a的各个属性都复制到新的内存中,就是深拷贝,也就是说,当b中的属性变化的时候,a的属性不会发生变化。自食其力。

posted @ 2018-09-03 18:39  李美玲  阅读(186)  评论(0编辑  收藏  举报