递归方式实现深拷贝

function deepClone(target) {
    let result;
    if (typeof target === "object") {
        if (Array.isArray(target)) {
            result = [];
            for (const i in target) {
                result.push(deepClone(target[i]));
            }
        } else if (target === null) {
            result = null;
        } else if (
            target.constructor === RegExp ||
            target.constructor === Date
        ) {
            result = target;
        } else {
            result = {};
            for (const i in target) {
                result[i] = deepClone(target[i]);
            }
        }
    } else {
        result = target;
    }
    return result;
}
//   示例
let strObj = {
    name: "zhangshan",
    age: "23",
    info: {
        name: "lishi",
    },
    sayHi() {
        console.log("111");
    },
};
let copyObj = deepClone(strObj);
copyObj.info.name = "王五";
console.log(strObj);
console.log(copyObj);
posted @ 2024-04-09 08:58  Smile浅笑  阅读(32)  评论(0编辑  收藏  举报