深拷貝

遞歸函數在深拷貝有用到數組

// - obj1和obj2必須都是對象才能使用 function copy (obj1, obj2) { for (var k in obj1) { // 根據屬性值得類型,須要進行不一樣的操做 if (typeof obj1[k] === 'object' && obj1[k] !== null) { // 若是對象的某個屬性值也是複雜數據類型,一樣須要進行遍歷拷貝操做 // 若是但願將obj1[k]的屬性拷貝給obj2[k],obj2[k]首先須要是一個對象 // obj2[k] = {}; // 先設置爲對象後,再將obj1[k]的屬性進行拷貝函數

// - 設置時須要考慮,數據究竟是數組仍是對象形式,再進行對應的建立
                obj2[k] = obj1[k] instanceof Array ? [] : {};
                copy(obj1[k], obj2[k]);
            } else {
                // 這種直接賦值的方式只適用於屬性值爲基本數據類型的狀況
                obj2[k] = obj1[k];
            }
        }
    }
    copy(obj1, obj2);
    /* obj1.aiHao.swim = '我喜歡蛙泳';
    obj1.aiHao.eat.xiHongShi = '我喜歡吃西紅柿炒雞蛋'; */
    console.log(obj1, obj2);複製代碼
相關文章
相關標籤/搜索