首页 > 其他 > 详细

浅拷贝和深拷贝

时间:2019-08-12 13:57:54      阅读:89      评论:0      收藏:0      [点我收藏+]

参考:https://www.cnblogs.com/echolun/p/7889848.html

 

主要出现原因是:JS有数组和对象,是引用类型的。引用类型一般指引用命名空间,相当于指针。所以按平时使用的方式就出现了浅拷贝。

浅拷贝:对象A和对象B共用同一份数据。改了A,B获取到的值也一起改了

深拷贝:B完全复制一份A出来。更改A不会对B有影响。

 

深拷贝的思想:复制对象或数组里的所有数据到新的返回对象里。通过递归和循环遍历属性(键)的方式获取到值和复制

            function deepClone(obj){
                let newObj = Array.isArray(obj)?[]:{};
                if(obj && typeof obj === "object"){
                    for(key in obj){
                        if(obj.hasOwnProperty(key)){
                            if(obj[key] && typeof obj[key] === "object"){
                                newObj[key] = deepClone(obj[key]);
                            }else{
                                newObj[key] = obj[key];
                            }
                        }
                    }
                }
                return newObj;
            }

  

浅拷贝和深拷贝

原文:https://www.cnblogs.com/cat66/p/11338791.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!