js可以使用以下方式实现深拷贝:
JSON.parse(JSON.stringify(obj))// 不支持值为undefined、函数和循环引用的情况
手写深拷贝实现如下:
function deepClone(obj) {
let cloneObj;
if (obj) {
if (typeof obj !== 'object') {
cloneObj = obj;
} else {
cloneObj = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
if (obj[key] && typeof obj[key] === 'object') {
cloneObj[key] = deepClone(obj[key]);
} else {
cloneObj[key] = obj[key];
}
}
}
}
}
return cloneObj;
}
console.log(
deepClone({
x: 1,
y: [5, 6, 7],
z: {
a: 0,
b: 1
}
})
);