在JavaScript中,“深拷贝”(Deep Copy)是指创建一个对象的完全独立的副本,这意味着副本与原始对象没有任何关联,对副本的任何修改都不会影响到原始对象。这与“浅拷贝”(Shallow Copy)形成对比,浅拷贝只复制对象的顶层属性,如果属性值是引用类型,则复制的是引用而不是实际的对象。
深拷贝可以通过多种方式实现,包括但不限于:
JSON.parse(JSON.stringify(obj))
_.cloneDeep
方法。const original = { a: 1, b: { c: 2 } };
const copy = JSON.parse(JSON.stringify(original));
copy.b.c = 3;
console.log(original.b.c); // 输出 2,原始对象未被修改
function deepCopy(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
const copy = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
return copy;
}
const original = { a: 1, b: { c: 2 } };
const copy = deepCopy(original);
copy.b.c = 3;
console.log(original.b.c); // 输出 2,原始对象未被修改
const _ = require('lodash');
const original = { a: 1, b: { c: 2 } };
const copy = _.cloneDeep(original);
copy.b.c = 3;
console.log(original.b.c); // 输出 2,原始对象未被修改
通过以上方法,可以根据具体需求选择合适的深拷贝实现方式。
高校公开课
Game Tech
2022腾讯科学WE大会
“中小企业”在线学堂
北极星训练营
领取专属 10元无门槛券
手把手带您无忧上云