美文网首页
JavaScript深克隆

JavaScript深克隆

作者: 椰果粒 | 来源:发表于2019-03-12 14:52 被阅读0次

    方法一:

    function deepClone(origin, target){
        // 防止没写被拷贝的对象
        var target = target || {},
            toStr = Object.prototype.toString,
            arrStr = "[object Array]";
        for(var i in origin){
            // 不用遍历原型上的属性
            if(origin[i] !== "null" && typeof origin[i] == "object"){
                // 不是原始类型
                if(typeof origin[i] == "object"){
                    // 如果是数组
                    if(toStr.call(origin[i]) == arrStr){
                        target[i] = [];
                    }else{  // 否则是对象
                        target[i] = {};
                    }
                    // 调用自身
                    deepClone(origin[i],target[i])
                }else{  // 原始类型(除了null)
                    target[i] = origin[i];
                }
            }
        }
        return target;
    }
    

    方法二:

    var obj2 = JSON.parse(JSON.stringify(obj));
    

    相关文章

      网友评论

          本文标题:JavaScript深克隆

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