JavaScript深克隆

2019-03-12  本文已影响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));
上一篇下一篇

猜你喜欢

热点阅读