在 JavaScript 中,我们可以使用 JSON.parse(JSON.stringify(obj))
来实现对象的深拷贝。然而,这种方法并不能拷贝 Symbol 类型的数据。
要深拷贝 Symbol 类型的数据,我们可以使用递归函数来实现。例如:
function deepCopy(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
if (obj instanceof Symbol) {
return Symbol(obj.description);
}
if (obj instanceof Date) {
return new Date(obj);
}
if (obj instanceof RegExp) {
return new RegExp(obj);
}
let copy = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
return copy;
}