2.39-淺層拷貝&深層拷貝

淺層拷貝 和 深層拷貝

淺複製 更深層次對象級別只拷貝引用

        var obj1 = {
            a: 10,
            b: 20,
            info: {
                c: 30
            }
        };
        var target = {};
        for(var key in obj1) {
            //console.log(key);
            //console.log(obj1[key]);  
            target[key] = obj1[key];  
        }
        target.info.c = 100;
        console.log(obj1.info.c);  //100
        console.log(target.info === obj1.info); // true

深拷貝

        function deepCopy(target,source) {
            for(var key in source) {
                var item = source[key];
                // 判斷是否爲數組 數組也是對象
                if (item instanceof Array) {
                    target[key] = [];
                    deepCopy(target[key],item);
                } else if (item instanceof Object) {
                    // 判斷是否爲對象
                    target[key] = {};
                    deepCopy(target[key],item);
                } else {
                    // 簡單數據類型
                    target[key] = item;
                }
            }
        }
        deepCopy(target,obj1);
        console.log(target);
        console.log(target.info === obj1.info);//fasle
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章