js --- 深复制,浅复制

Posted zhanghuiyun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js --- 深复制,浅复制相关的知识,希望对你有一定的参考价值。

 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 --- 深复制,浅复制的主要内容,如果未能解决你的问题,请参考以下文章

js中的深复制与浅复制

也来谈一谈js的浅复制和深复制

js深复制和浅复制

js中浅复制跟深复制的简单实现

js --- 深复制,浅复制

js中的深拷贝和浅拷贝