返回
彻底讲清楚浅拷贝与深拷贝
前端
2023-12-05 07:52:18
浅拷贝和深拷贝的区别
- 浅拷贝只复制对象的引用,而深拷贝会复制对象及其所有的属性,包括嵌套的对象。
- 浅拷贝只占用一个内存空间,而深拷贝会占用多个内存空间。
- 浅拷贝不会递归复制对象的属性,而深拷贝会递归复制对象的属性。
浅拷贝的实现
// 浅拷贝
const object1 = {
name: 'John',
age: 30,
address: {
city: 'New York',
state: 'New York',
},
};
const object2 = Object.assign({}, object1);
// 修改object2的属性
object2.name = 'Jane';
object2.address.city = 'Los Angeles';
// 打印object1和object2
console.log(object1); // { name: 'John', age: 30, address: { city: 'Los Angeles', state: 'New York' } }
console.log(object2); // { name: 'Jane', age: 30, address: { city: 'Los Angeles', state: 'New York' } }
深拷贝的实现
// 深拷贝
const object1 = {
name: 'John',
age: 30,
address: {
city: 'New York',
state: 'New York',
},
};
const object2 = JSON.parse(JSON.stringify(object1));
// 修改object2的属性
object2.name = 'Jane';
object2.address.city = 'Los Angeles';
// 打印object1和object2
console.log(object1); // { name: 'John', age: 30, address: { city: 'New York', state: 'New York' } }
console.log(object2); // { name: 'Jane', age: 30, address: { city: 'Los Angeles', state: 'New York' } }
浅拷贝和深拷贝的使用场景
- 浅拷贝通常用于复制基本数据类型和简单的对象,而深拷贝通常用于复制复杂的对象,如包含数组或其他对象的嵌套对象。
- 浅拷贝的效率更高,因为只需要复制一次引用,而深拷贝的效率较低,因为需要递归复制所有的属性。
- 浅拷贝可以用来共享对象,而深拷贝可以用来隔离对象。
结论
浅拷贝和深拷贝都是有用的数据复制方法,它们在不同的场景下都有各自的用途。理解浅拷贝和深拷贝的区别对于编写高效和健壮的代码非常重要。