中国移动 JDK动态代理 阿里巴巴 less Transformer npm unicode x86 msbuild vue中文 axure组件库下载 mac安装hadoop eclipse闪退 虚拟机重启命令 matlab图像滤波 svn安装后右键不显示 java 注解 python输出 python的array windows安装python环境 python返回值 java环境安装 java平台 java安装 java接口规范 java格式化日期 java数据类型转换 linux硬盘 莫愁脚本 修改mac地址软件 一键刷入recovery java小程序 java分布式开发 id解锁大师 奥法隐藏外观 毕业证件照 拼多多商家下载 diskman 迅雷单机游戏下载 谷歌地球怎么用不了
当前位置: 首页 > 学习教程  > 编程语言

浅拷贝和深拷贝的区别(详解)

2021/1/13 19:51:35 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

今天小编给你们讲讲浅拷贝跟深拷贝吧! 欢迎可爱的你们来看看,互相学习喔! 浅拷贝和深拷贝最根本的区别就是是否真正获取一个对象的复制实体,而不是引用; 简单来说浅拷贝就是一个改变,另一个也会变&#x…

今天小编给你们讲讲浅拷贝跟深拷贝吧!
欢迎可爱的你们来看看,互相学习喔!
在这里插入图片描述

浅拷贝和深拷贝最根本的区别就是是否真正获取一个对象的复制实体,而不是引用;
简单来说浅拷贝就是一个改变,另一个也会变,只拷贝一层对象的属性。
深拷贝就是两个对象对应两个不同的地址,修改一个对象的属性,另一个不会改变。(文字多了就会不想看了,我们来展示代码吧)

浅拷贝还用代码来展示吗算了来一段吧哈哈
	var obj1={"name":"隔壁老王"};
    var obj2 = obj1;
        obj1.name ="隔壁老李";
    console.log("obj1",obj1);
    console.log("obj2",obj2);

一个改变另一个也会变
在这里插入图片描述
递归-深拷贝

var obj={
            "name":"隔壁老王",
            "age":13,
            "list":{"title":"新闻"}
        }
function deepCopy(obj){
      var copyobj={}    //创建新对象
          for( var key in obj ){
               if( obj.hasOwnProperty(key)==true ){   //判断对象自身是否存在属性
                  if( obj[key] instanceof Object ){   //判断属性值是不是对象
                      copyobj[key]=deepCopy(obj[key])   //是的话赋值
                  }else{
                      copyobj[key]=obj[key]    //是的话赋值
                  }
              }
          }
          return copyobj          //返回对象 
                    
}

      var obj2=deepCopy(obj)   //递归赋值新对象
      obj.list.title="娱乐"    //修改对象属性
      console.log('obj :>> ', obj);   //一个改变,另一个不会变
      console.log('obj2 :>> ', obj2);

展示效果
在这里插入图片描述
帮助到你们给小姐姐点赞评论喔~


本文链接: http://www.dtmao.cc/news_show_600191.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?