JavaScript中深拷贝和浅拷贝的区别如下:
- 浅拷贝。有两种方式,一种是把一个对象里面的所有的属性值和方法都复制给另一个对象,另一种是直接把一个对象赋给另一个对象,使得两个都指向同一个对象。对对象里面的对象属性和数组属性只是复制了地址,并没有创建新的相同对象或者数组。
- 深拷贝。把一个对象的属性和方法一个个找出来,在另一个对象中开辟对应的空间,一个个存储到另一个对象中。是完完全全的复制一份,空间大小占用一样但是位置不同
JS中常用的深浅拷贝方法如下:
浅拷贝:
1. Object.assign(target, ...sources)
2. Array.prototype.concat()
3. Array.prototype.slice()
深拷贝:
1. JSON.parse(JSON.stringify(obj))
2. Lodash库的_.cloneDeep()方法