首先等你有空的时候可以看这篇,要用可以看我这篇

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

1.有一点需要明确的是 深拷贝只是针对引用数据类型来说的,基本数据类型都是深拷贝

基本数据类型有哪些,number,string,boolean,null,undefined,symbol六类。

引用数据类型(Object类)有常规名值对的无序对象{a:1},数组[1,2,3],以及函数

2.基本数据类型的浅拷贝就是一般赋值,

  1. var a = 'jack'
  2. var b
  3. b = a
  4. console.log(b) //jack
  5. b = '你好'
  6. console.log(b)//你好
  7. console.log(a) //jack

a并不会因为b的改变而改变,但是这是浅拷贝,不是深拷贝

3.接下来是引用数据类型深拷贝和浅拷贝

浅拷贝的作用:

主要是赋值,并且复制后的对象改变之前的对象也会改变

a. es6的Object.assign(obj)浅拷贝

  1. var obj = {
  2. name: 'jack',
  3. age: 18
  4. }
  5. var data = Object.assign(obj)
  6. console.log(data) //{name: 'jack',age: 18}
  7. data.name = '花花'
  8. console.log(data)//{name: "花花", age: 18}
  9. console.log(obj)//{name: "花花", age: 18}

b es6的解构赋值

  1. let obj = {
  2. name: 'jack',
  3. age: 18
  4. }
  5. let {age,name} = obj
  6. let data = { name,age}
  7. console.log(data) //{age:18}
  8. data.age = 20
  9. console.log(data) //{age:20}
  10. console.log(obj) //{age:18}

c 循环赋值(知识点:for和forEach用来循环数组,for in 数组 对象都行)

  1. var obj = {
  2. name: 'jack',
  3. age: 18
  4. }
  5. var params = {}
  6. for(var key in obj){
  7. params[key] = obj[key]
  8. }
  9. console.log(params, 22)//{name: "jack", age: 18}

或者

  1. var obj = {
  2. name: 'jack',
  3. age: 18,
  4. hobby: {
  5. school: 'listen video',
  6. home: 'watch TV'
  7. }
  8. }
  9. var params = {}
  10. params =JSON.parse(JSON.stringify(obj))

深拷贝

为什么要用到深烤贝

下面有个

深度clone和浅clone的更多相关文章

  1. 类复制 MemberwiseClone与Clone(深 浅 Clone)

    MemberwiseClone 方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象.如果字段是值类型的,则对该字段执行逐位复制.如果字段是引用类型,则复制引用但 ...

  2. java 深clone和浅clone

    1. clone类 public class Person implements Cloneable, Serializable{ /** * */ private static final long ...

  3. JavaScript 中的对象深度复制(Object Deep Clone)

    JavaScript中并没有直接提供对象复制(Object Clone)的方法. JavaScript中的赋值,其实并不是复制对象,而是类似`c/c++`中的引用(或指针),因此下面的代码中改变对象b ...

  4. php对象复制、clone、浅复制与深复制实例详解

    php对象复制.clone.浅复制与深复制实例详解 一.用clone(克隆)来复制对象$obj1 = new Object();$obj2 = clone $obj1;clone方法会触发对象里定义的 ...

  5. github git clone ssh协议 clone超慢解决方案,提高Github Clone速度

    即使进行了fq吧但是git clone ssh协议就是慢 2kb/s你能忍,坚决不能忍. github git clone ssh协议 clone超慢解决方案 151.101.72.249 globa ...

  6. TensorFlow 2.0 深度学习实战 —— 浅谈卷积神经网络 CNN

    前言 上一章为大家介绍过深度学习的基础和多层感知机 MLP 的应用,本章开始将深入讲解卷积神经网络的实用场景.卷积神经网络 CNN(Convolutional Neural Networks,Conv ...

  7. 深入探讨JavaScript如何实现深度复制(deep clone)

    在代码复用模式里面有一种叫做“复制属性模式”(copying properties pattern).谈到代码复用的时候,很有可能想到的是代码的继承性(inheritance),但重要的是要记住其最终 ...

  8. 再谈java clone 以及 浅/深拷贝

    简单对象的拷贝,直接使用其clone方法 即可, 不会有什么问题: class Dog implements Cloneable public Dog clone() { int age; Strin ...

  9. 深度理解DOM拷贝clone()

    克隆节点是DOM的常见操作,jQuery提供一个clone方法,专门用于处理dom的克隆: .clone()方法深度 复制所有匹配的元素集合,包括所有匹配元素.匹配元素的下级元素.文字节点. clon ...

随机推荐

  1. SOFT-NMS (二) (non maximum suppression,非极大值抑制)

    import numpy as np boxes = np.array([[200, 200, 400, 400], [220, 220, 420, 420], [200, 240, 400, 440 ...

  2. 【i.MX6UL/i.MX6ULL开发常见问题】单独编译内核,uboot生成很多文件,具体用哪一个?

    [i.MX6UL/i.MX6ULL开发常见问题]2.3单独编译内核,uboot生成很多文件,具体用哪一个? 答:内核编译出来的文件是~/MYiR-imx-Linux/arch/arm/boot/目录下 ...

  3. python中configparser模块读取ini文件

    python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...

  4. JavaScript之轮播图

    (1)html <div class="box" id="box"> <ul class="uls" id="u ...

  5. rsyslog传输指定目录下的全部日志数据

    准备: 两台Linux电脑 server(A):10.1.75.177 client(B):10.1.75.229 目的: 将B上的/usr/local/record目录下的所有日志数据传输到A的/v ...

  6. zookeeper 事务日志查看

    在version下的日志是二进制文件,查看需要转换 创建/data/middleware/zookeeper-3.4.14/translog.sh 脚本 格式化命令: java -classpath ...

  7. selenium 滚动屏幕操作+上传文件

    执行js脚本来滚动屏幕: (x,y)x为0 纵向滚动,y为0横向滚动 负数为向上滚动 driver.execute_script('window.scrollBy(0,250)') 上传文件: 1.导 ...

  8. Springboot项目中Pom.xml报错

    摘要:使用idea,两次在maven上浪费时间,第一次不知道怎么就解决了,第二次记录一下解决办法 参考博客地址: https://blog.csdn.net/u013129944/article/de ...

  9. 25.centos7基础学习与积累-011-课前考试二-命令练习

    从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 取IP地址: 6的命令:ifconfig eth0 7的命令 [root@pytho ...

  10. 获取ul li的value的值

    <script> $(function(){ $(".month-list").find("li").click(function(){ var t ...