深复制,浅复制

 1 //浅复制
 2 var obj={  
 3     a:{  
 4         son1:'aa',  //obj对象里的a也是个对象  
 5         son2:'bb'  
 6     },  
 7     b:20  
 8 };  
 9   
10 function copy(obj){  
11     var newobj={};  
12     for(arr in obj)  
13     {  
14         newobj[arr]=obj[arr]  
15     }  
16     return newobj;  
17 }  
18   
19 obj2=copy(obj);  
20 alert(obj2.a.son1);//成功复制出obj的a  
21 obj.a.son1=555;  //更改了obj的a.son2  
22 alert(obj2.a.son1);//obj2的a.son1也随之改变  
//深复制
var obj={  
        a:{aa:10},//浅拷贝解决不了对象中的对象  
        b:11  
    };  
    function deepcopy(obj){  
          
        if(typeof obj!='object') //检验是否彻底  
        {  
            return obj;  
        }  
  
        var newobj={};  
  
        for(var attr in obj)  
        {  
            newobj[attr]=deepcopy(obj[attr]); //递归 (核心代码)  
        }  
        return newobj;  
    }  
    var obj2=deepcopy(obj);  
    alert(obj.a.aa);//10  
    alert(obj2.a.aa);//10 成功复制深层对象aa  
    obj2.a.aa=22;  //改变obj2的a的aa  
    alert(obj2.a.aa);//  改变  
    alert(obj.a.aa);//10  不变  

 

posted @ 2016-09-07 17:55  ^^-^^-  阅读(154)  评论(0编辑  收藏  举报