-
浅拷贝(Shallow Copy):
- 浅拷贝创建一个新对象,但是这个新对象的属性值是指向原始对象属性值的引用。
- 对于对象属性是基本数据类型的,浅拷贝会复制其值。
- 对于对象属性是对象(或数组)的,浅拷贝只复制引用,而不复制对象本身。
-
深拷贝(Deep Copy):
- 深拷贝创建一个新对象,并且递归地复制所有子对象的属性。
- 深拷贝确保原始对象和新对象之间没有任何引用关联,修改新对象不会影响原始对象。
如何实现深拷贝
使用 JSON.parse(JSON.stringify(obj)) 有局限性 很多类型不支持
const original = { a: 1, b: [1, 2, 3], c: { d: 4 }, e: new Date(), f: /a/gi, g: new Set([1, 2, 3]), h: new Map([['a', 1], ['b', 2]]), i: new Error('error'), j: null, k: undefined, l: BigInt(1) };const deepCopied = JSON.parse(JSON.stringify(original));
使用 structuredClone(obj)
const deepCopieds = structuredClone(original);
// 测试 original.b.push(4); original.c.d = 5;console.log("Original:", original); console.log("deepCopied:",deepCopied); console.log("deepCopieds:", deepCopieds);
标签:区别,对象,代码,JSON,new,拷贝,original,属性 From: https://www.cnblogs.com/yxdlm/p/18407174