深拷贝和浅拷贝的区别
深拷贝和浅拷贝的区别
用自己的语言描述就是 是不是真正获取了一个对象复制的实体,而不是引用
假设现在有俩个数组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的属性不会发生变化。自食其力。