我们看一下这个例子:

let a={tile:'深复制'};
let b=a;
a.title='浅复制';  

那么我们会获得两个对象,一个a,一个b,a的title是浅复制,b的title是深复制。
但结果真是这样吗?

我们console.log一下

为啥两个都是输出"浅复制"。。。。

其实,a,b是共用同一个地址,所以虽然看起来是两个对象,其实就是一个对象,a===b,这就是深复制,复制的不仅仅是数据,而且连地址一起复制过来了,相当于Windows的快捷方式,表面上看起来一个在C盘,一个在D盘,其实都是一个文件。

那么,如果我们仅仅想复制”深复制“这三个字呢?a的title和b的title要不同,我们如何来做。

let a={title:'深复制'};
let b={...a,content:"一个教程"};
a.title='浅复制';
console.log(a.title);
console.log(b.title);  

我们再来看打印结果

这样我们虽然复制了a的所有数据,但是a和b是不同的对象,更改任意一个的数据,不会影响到第二个,而且b还可以对a 进行拓展,比如加了content一个字段。

添加一个字段很烦?那再来说说这个

let a=[1,23];
let b=[...a];
b[1]=32;
console.log(a);   //[1, 23]
console.log(b);  //[1, 32]

看到了么?ES6的剩余参数也可以直接做到深复制,完全不需要添加字段或者数组a.concat('')来进行复制

更新,上面这个不对,往下看

let a =[{a:1}]
let b = JSON.parse(JSON.stringify(a))
b[0].a=3consloe.log(a[0].a)  // 1

用json转才可以完成深赋值,因为字符串转成对象之后就是一个新的对象了;

js数组中的引用类型相关推荐

  1. 从JS数组中删除重复的值[duplicate]

    本文翻译自:Remove duplicate values from JS array [duplicate] This question already has answers here : 这个问 ...

  2. js数组中forEach/some/every/map/filter/reduce的区别

    2019独角兽企业重金招聘Python工程师标准>>> // js数组中forEach/some/every/map/filter/reduce的区别// 1. foreach:就是 ...

  3. JS数组中 forEach() 和 map() 的区别

    JS数组中 forEach() 和 map() 的区别 Array中 Array.forEach()和 Array.map()方法之间的区别. forEach()和map()方法通常用于遍历Array ...

  4. 去除html重复的元素 js,js数组中去除重复值的几种方法

    在日常开发中,我们可能会遇到将一个数组中里面的重复值去除,那么,我就将我自己所学习到的几种方法分享出来 去除数组重复值方法: 1,利用indexOf()方法去除 思路:创建一个新数组,然后循环要去重的 ...

  5. js数组中foEach和map的用法详解 jq中的$.each和$.map

    数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...

  6. js list删除指定元素_删除js数组中的指定元素,有这两步就够了

    js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单. 1.JS的数组对 ...

  7. js数组中常见的方法

    在js里面有许多对数组进行处理的方法,下面介绍一下常用方法 push()方法,作用:在数组尾部添加入一个或多个数据,返回数组的新长度 实例: <script>var arr = [1,2, ...

  8. js数组中深拷贝的方法

    一.什么是浅拷贝 在js当中,我们常常遇到数组复制的的情况,许多人一般都会使用"="来直接把一个数组赋值给一个变量,如 1 var a=[1,2,3]; 2 var b=a; 3 ...

  9. js数组中indexOf和findIndex的区别

    1. indexOf 语法 arr.indexOf(searchElement[, fromIndex]) 参数 searchElement  要查找的元素 fromIndex (可选 )  开始查找 ...

最新文章

  1. 自定义 checkbox 新玩法 ?
  2. 云端能力知几许?12人众测华为云企业级Kubernetes集群实力
  3. C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息)
  4. 防止表单重复提交的简单有效的策略
  5. jquery unbind 异步_JQuery中的bind()和unbind()的理解
  6. python字典的键有什么要求_在Python中使用范围作为字典键,我有什么选择?
  7. SQL SERVER 2008筛选时报错 无法为该请求检索数据
  8. 经过七年演进,Serverless流行起来了吗?
  9. 『线段树及扫描线算法 Atlantis』
  10. mysql 开发基础系列19 触发器
  11. html 复选框 不能选,启用或禁用html中的复选框
  12. zcu106 固化_ZCU106的PYNQ移植
  13. java协同过滤算法的演唱会门票售票系统
  14. WAL日志磁盘空间占用大小分析
  15. MATLAB永久常数
  16. Java 八大基本数据类型简述
  17. 高等数学:第八章 多元函数的微分法及其应用(3)全微分
  18. 利用浏览器缓存抓取网络资源:【炉石传说】所有卡牌png图片地址
  19. php怎么变成微信小程序,自己怎么开通微信小程序
  20. 【Joy of Cryptography 读书笔记】Chapter 6 伪随机函数(Pseudorandom Function)分组密码(Block Cipher)

热门文章

  1. 大学计算机ppt操作表格,大学计算机应用基础第四章 电子表格软件Exc.ppt
  2. linux git文件图标,分享|三款 Linux 下的 Git 图形客户端
  3. vfp如何比较两张表的关键字重复_Access开发中建表的基本原理和规范(上)
  4. 高德地图 街道范围_高德地图发布交通“评诊治”系统:针对各类交通拥堵场景“因地制宜”...
  5. nginx 端口没有被占用启动闪退_Nginx 的简单使用 (IIS,Asp.Net) - 奋斗的中年人哈哈哈...
  6. mysql 存储过程 无限分类,查看新闻/公告--[转帖]mysql存储过程实现的无限级分类,前序遍历树...
  7. 【阿里云MPS】Demo
  8. 【若依(ruoyi)】向DAO中传递动态参数
  9. JNDI配置DataResource代替JDBC连接数据库
  10. 2d游戏引擎_游戏60秒:RTS游戏从2D到3D的蜕变