码迷,mamicode.com
首页 > Web开发 > 详细

js --- 深复制,浅复制

时间:2016-09-07 19:04:39      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

 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  不变  

 

js --- 深复制,浅复制

标签:

原文地址:http://www.cnblogs.com/zhanghuiyun/p/5726681.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!