js深拷贝与浅拷贝
JavaScript 中的深拷贝和浅拷贝是两种不同的拷贝方式。
浅拷贝是指将一个对象的引用赋值给另一个对象,这样两个对象就指向了同一个内存地址。当修改其中一个对象时,另一个对象也会受到影响。常见的浅拷贝方法有 Object.assign()、展开运算符(...)等。
例如:
const obj1 = { a: 1, b: 2 };
const obj2 = obj1; // 浅拷贝
obj2.a = 3;
console.log(obj1); // { a: 3, b: 2 }
console.log(obj2); // { a: 3, b: 2 }
深拷贝则是创建一个新对象,将原对象中的所有属性递归地复制到新对象中。这样得到的新对象和原对象是完全独立的,修改其中一个对象不会影响另一个对象。常见的深拷贝方法有 JSON.parse(JSON.stringify(obj))、手动递归复制等方法。
例如:
const obj1 = { a: { b: 1 } };
const obj2 = JSON.parse(JSON.stringify(obj1)); // 深拷贝
obj2.a.b = 2;
console.log(obj1); // { a: { b: 1 } }
console.log(obj2); // { a: { b: 2 } }
需要注意的是,深拷贝可能会因为递归层数过深、循环引用等问题而出现性能问题和错误。因此,在进行深拷贝时需要谨慎考虑。
原文地址: https://www.cveoy.top/t/topic/rTb 著作权归作者所有。请勿转载和采集!