码迷,mamicode.com
首页 > 其他好文 > 详细

深刻理解 引用类型、浅拷贝、深拷贝

时间:2019-06-12 10:59:26      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:var   gif   spl   hide   eve   style   new   改变   one   

简单粗暴的理解,就是对象都是引用类型 但是有的时候需要完全复制一个新的对象,操作新对象的时候不会改变原对象,这个时候就有了浅拷贝和深拷贝,

浅拷贝,拷贝的只是对象的一级内容,而子集内容还是引用类型,会随着新对象值的改变而改变,

深拷贝,完全拷贝出一个一模一样但是 没有任何关联的对象。

技术图片
var obj ={
        name:1,
        age:{
            a:2,
            b:{
                c:123456
            }
        }
    };
var obj2 = copy(obj);
function copy(obj){
        var newobj = {};
        for(arr in obj){
            newobj[arr] = obj[arr]
        }
        return newobj;
     }
           
View Code

这里例子就是 浅拷贝  他的二级  obj2.age.a  还是引用关系 。

技术图片
function copy(obj){
        var newobj = {};
        for(arr in obj){
            if(typeof obj[arr] === ‘object‘) {
                newobj[arr] =  copy(obj[arr])
            } else {
                newobj[arr] = obj[arr]
            }
            newobj[arr] = obj[arr]
        }
        return newobj;
     }
View Code

深拷贝 使用递归将所有子集 都打断引用关系

 

981900309@qq.com

深刻理解 引用类型、浅拷贝、深拷贝

标签:var   gif   spl   hide   eve   style   new   改变   one   

原文地址:https://www.cnblogs.com/caihua0405/p/11007881.html

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