JavaScript 的深拷贝是指将一个对象的所有属性及其值复制到一个新对象中,并且对新对象的修改不会影响原对象。
深拷贝与浅拷贝的区别在于浅拷贝只是复制对象的引用,对新对象的修改会影响原对象。
JavaScript 中可以使用以下方法实现深拷贝:
- 使用 JSON.parse() 和 JSON.stringify() 方法。
- 使用递归函数。
- 使用第三方库,如 lodash 的 _.cloneDeep() 方法。
下面是使用 JSON.parse() 和 JSON.stringify() 方法实现深拷贝的示例:
const obj = {a: 1, b: {c: 2}};
const copy = JSON.parse(JSON.stringify(obj));
使用递归函数实现深拷贝的示例:
functiondeepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let copy;
if (Array.isArray(obj)) {
copy = [];
} else {
copy = {};
}
for (const key in obj) {
copy[key] = deepCopy(obj[key]);
}
return copy;
}
const obj = {a: 1, b: {c: 2}};
const copy = deepCopy(obj);