js深度克隆

178 阅读1分钟
let user = {
    name: "john",
    age: 30,
    hobbies: ["reading", "swim"],
    friends: {
        ming: {
            name: 'xiaoming',
            age: 12
        },
        li: {
            name: 'xiaoli',
            age: 13
        }
    }
}

如何克隆这个对象?

const deepClone = (cloneObj, targetObj) => {
    for (const key in targetObj) {
        if (typeof targetObj[key] !== "object") {
            cloneObj[key] = targetObj[key];
        } else {
            if (targetObj[key] instanceof Array) {
                cloneObj[key] = []
                deepClone(cloneObj[key], targetObj[key])
            } else if (targetObj[key] instanceof Object) {
                cloneObj[key] = {}
                deepClone(cloneObj[key], targetObj[key])
            }
        }
    }
}

使用

const clone = {};
deepClone(clone, user)
console.log(clone);