JavaScript深克隆

方法一:

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));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章