浅拷贝与深拷贝的概念
浅拷贝和深拷贝是编程中常见的两种数据复制方式,主要用于处理对象或复杂数据结构的复制问题。浅拷贝仅复制对象的顶层结构,而深拷贝会递归复制对象的所有层级结构。两者的选择取决于具体需求,尤其在涉及嵌套对象或引用类型数据时,深拷贝能避免潜在的副作用。
浅拷贝的实现方式
浅拷贝仅复制对象的顶层属性,如果属性是引用类型(如数组、对象),则复制的是引用而非实际值。这意味着修改拷贝后的引用类型数据会影响原始对象。
使用展开运算符实现浅拷贝
const original = { a: 1, b: { c: 2 } };
const shallowCopy = { ...original };
shallowCopy.b.c = 3;
console.log(original.b.c); // 输出 3,原始对象被修改
使用 Object.assign 实现浅拷贝
const original = { a: 1, b: { c: 2 } };
const shallowCopy = Object.assign({}, original);
shallowCopy.b.c = 3;
console.log(original.b.c); // 输出 3,原始对象被修改
深拷贝的实现方式
深拷贝会递归复制对象的所有层级,确保拷贝后的对象与原始对象完全独立,修改拷贝对象不会影响原始对象。
使用 JSON.parse 和 JSON.stringify 实现深拷贝
const original = { a: 1, b: { c: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));
deepCopy.b.c = 3;
console.log(original.b.c); // 输出 2,原始对象未被修改
注意:此方法无法处理函数、undefined 或循环引用的情况。
递归实现深拷贝
function deepClone(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
const clone = Array.isArray(obj) ? [] : {};
for (const key in obj) {
if
### 浅拷贝与深拷贝的概念
浅拷贝和深拷贝是编程中常见的两种数据复制方式,主要用于处理对象或复杂数据结构的复制问题。浅拷贝仅复制对象的顶层结构,而深拷贝会递归复制对象的所有层级结构。两者的选择取决于具体需求,尤其在涉及嵌套对象或引用类型数据时,深拷贝能避免潜在的副作用。
### 浅拷贝的实现方式
浅拷贝仅复制对象的顶层属性,如果属性是引用类型(如数组、对象),则复制的是引用而非实际值。这意味着修改拷贝后的引用类型数据会影响原始对象。
#### 使用展开运算符实现浅拷贝
```javascript
const original = { a: 1, b: { c: 2 } };
const shallowCopy = { ...original };
shallowCopy.b.c = 3;
console.log(original.b.c); // 输出 3,原始对象被修改
使用 Object.assign 实现浅拷贝
const original = { a: 1, b: { c: 2 } };
const shallowCopy = Object.assign({}, original);
shallowCopy.b.c = 3;
console.log(original.b.c); // 输出 3,原始对象被修改
深拷贝的实现方式
深拷贝会递归复制对象的所有层级,确保拷贝后的对象与原始对象完全独立,修改拷贝对象不会影响原始对象。
使用 JSON.parse 和 JSON.stringify 实现深拷贝
const original = { a: 1, b: { c: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));
deepCopy.b.c = 3;
console.log(original.b.c); // 输出 2,原始对象未被修改
注意:此方法无法处理函数、undefined 或循环引用的情况。
递归实现深拷贝
function deepClone(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
const clone = Array.isArray(obj) ? [] : {};
for (const key in obj) {
if

937

被折叠的 条评论
为什么被折叠?



