HEY,小伙伴们!
老生常谈的话题,废话不多说直接进入正题:
浅拷贝:
- 拷贝顾名思义复制,假如我们从a对象复制到b对象,对于基本数据类型来说直接复制,如果改变b对象的值,a对象也会发生改变;注意:对于引用类型来说,如果改变b对象的值,a对象也会发生相应改变,注意引用类型复制的是内存地址,所以改变其中一个对象,就会影响另一个,代码如下:
我们常见的浅拷贝场景有:扩展运算符...,Object.assign(),Array.prototype.slice(),concat,Array.from() 等
深拷贝:
同样的,我们有两个对象a和b,a复制给b,如果我们改变a的属性值,此时b的属性值不会发生改变,这就是深拷贝,b对象把a对象的属性,以及内存地址全部拷贝过来,前后2个对象互补影响;代码如下:
两个对象互不影响!
我们常见的深拷贝场景有:JSON.parse(JSON.stringify()),`jQuery.extend(),lodash.cloneDeep()等