function deepCopy(obj) {
// 如果不是对象,则直接返回
if (typeof obj !== 'object' || obj === null) {
return obj;
}
// 处理Date, RegExp, Function等特殊类型
if (obj instanceof Date) {
return new Date(obj);
}
if (obj instanceof RegExp) {
return new RegExp(obj);
}
if (typeof obj.clone === 'function') {
// 如果对象有clone方法,尝试调用该方法进行克隆
return obj.clone();
}
// 创建目标对象实例
let cloneTarget;
if (Array.isArray(obj)) {
cloneTarget = [];
} else {
cloneTarget = {};
}
// 遍历对象的每个属性
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
// 递归复制属性
cloneTarget[key] = deepCopy(obj[key]);
}
}
// 返回复制后的对象
return cloneTarget;
}
// 使用示例
const originalObj = {
a: 1,
b: {
c: 2,
d: [3, 4]
},
e: new Date(),
f: function() { console.log('hello'); }
};
const copiedObj = deepCopy(originalObj);
console.log(copiedObj===originalObj,'copiedObj');
网友评论