美文网首页
简单的JavaScript深度克隆

简单的JavaScript深度克隆

作者: ChooAcc | 来源:发表于2020-05-27 01:21 被阅读0次
    let obj = { one: 5, tow: "str", three: [4, 3, 2, 1], four: { a: "A", b: "B" }, five: null, six: undefined };
    
    /**
     * 简单深度克隆
     * @param {被克隆对象} obj 
     */
    function deepClone(obj) {
        if (!isObject(obj)) { return obj; }
        let temp = Array.isArray(obj) ? [] : {};
        for (let key in obj) {
            if (isObject(obj[key])) {
                temp[key] = deepClone(obj[key]);
            } else {
                temp[key] = obj[key];
            }
        }
        return temp;
    }
    
    /**
     * 检验是否为对象
     * @param {被检查的元素} obj 
     */
    function isObject(obj) {
        return obj && typeof obj === "object";
    }
    
    // 测试
    let copy = deepClone(obj);
    copy["three"][0] = 155;
    // { one: 5, tow: "str", three: [155, 3, 2, 1], four: { a: "A", b: "B" }, five: null, six: undefined }
    console.log(copy);
    
    // 原对象数据不受影响
    // { one: 5, tow: "str", three: [4, 3, 2, 1], four: { a: "A", b: "B" }, five: null, six: undefined }
    console.log(obj);
    

    相关内容:JavaScript浅克隆对象的方法

    相关文章

      网友评论

          本文标题:简单的JavaScript深度克隆

          本文链接:https://www.haomeiwen.com/subject/vvhiahtx.html