在JavaScript中,浅拷贝(Shallow Copy)和深拷贝(Deep Copy)是两种用于复制数组或对象的常用方法。它们的区别在于复制复杂对象时如何处理对象内部的属性。

  1. 浅拷贝(Shallow Copy):
    浅拷贝只复制对象的引用,而不是实际的对象。这意味着如果你修改了复制的对象,原始对象也会受到影响。在JavaScript中,可以使用Object.assign()方法实现浅拷贝。

例如:

let originalObject = { a: 1, b: 2 };
let copiedObject = Object.assign({}, originalObject);

copiedObject.a = 3;

console.log(originalObject.a); // 输出 1,原始对象不受影响
console.log(copiedObject.a); // 输出 3,复制对象被修改
  1. 深拷贝(Deep Copy):
    深拷贝不仅复制对象的引用,还会复制对象内部的属性和值。这意味着修改复制的对象不会影响原始对象。在JavaScript中,可以使用JSON对象实现深拷贝。

例如:

let originalObject = { a: 1, b: 2, c: { d: 3 } };
let copiedObject = JSON.parse(JSON.stringify(originalObject));

copiedObject.a = 4;
copiedObject.c.d = 5;

console.log(originalObject.a); // 输出 1,原始对象不受影响
console.log(originalObject.c.d); // 输出 3,原始对象不受影响
console.log(copiedObject.a); // 输出 4,复制对象被修改
console.log(copiedObject.c.d); // 输出 5,复制对象被修改

请注意,使用深拷贝方法时要注意处理复杂对象内部的循环引用问题,以避免出现无限递归或性能问题。


@漏刻有时

10-07 20:13