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

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

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

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

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

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

   var a = 'jack'
var b
b = a
console.log(b) //jack
b = '你好'
console.log(b)//你好
console.log(a) //jack

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

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

浅拷贝的作用:

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

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

   var obj = {
name: 'jack',
age: 18
}
var data = Object.assign(obj)
console.log(data) //{name: 'jack',age: 18}
data.name = '花花'
console.log(data)//{name: "花花", age: 18}
console.log(obj)//{name: "花花", age: 18}

b es6的解构赋值

     let obj = {
name: 'jack',
age: 18
}
let {age,name} = obj
let data = { name,age}
console.log(data) //{age:18}
data.age = 20
console.log(data) //{age:20}
console.log(obj) //{age:18}

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

    var obj = {
name: 'jack',
age: 18
}
var params = {}
for(var key in obj){
params[key] = obj[key]
}
console.log(params, 22)//{name: "jack", age: 18}

或者

 var obj = {
name: 'jack',
age: 18,
hobby: {
school: 'listen video',
home: 'watch TV'
}
}
var params = {}
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. string 转stream和stream转string

    string test = “Testing 1-2-3″; // convert string to stream MemoryStream stream = new MemoryStream(); ...

  2. elsave.exe日志清除

    > elsave.exe -h usage: elsave [-s \\server] [-l log] [-F file] [-C] [-q] Saves and/or clears a Wi ...

  3. 在DoNetCore MVC 中如何使用AutoMapper

    刚开始,按照在donet mvc 的方法写了一遍,发现行不通啊,于是百度了一下,找到这么一篇 https://stackoverflow.com/questions/41284349/automapp ...

  4. [LeetCode] 437. 路径总和 III ☆☆☆(递归)

    路径总和 III 描述 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子 ...

  5. 【等待事件】等待事件系列(5.1)--Enqueue(队列等待)

    [等待事件]等待事件系列(5.1)--Enqueue(队列等待)   1  BLOG文档结构图   2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可 ...

  6. 【RAC】 RAC For W2K8R2 安装--卸载(八)

    [RAC] RAC For W2K8R2 安装--卸载(八) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它 ...

  7. plsql连接数据库后备注乱码|plsql连接数据库后中文乱码

    -- 背景:连接开发库后查阅单表备注信息时发现所有的备注都显示为"???????". -- 解决方案: -- (1). 首先先确认数据库的编码格式字符集,查询数据库编码格式. -- ...

  8. QtCreator设置野火iMx6开发板提供的qt交叉编译套件

    在Ubuntu18 QtCreator上添加野火iMx6开发板的Qt交叉编译环境PC:Ubuntu18.04QtCreator: 4.8.2交叉编译环境:野火提供的 5-编译工具链->qt交叉编 ...

  9. while 格式化输出 运算符 字符编码

    流程控制之while循环 条件循环:while,语法如下 while 条件: # 循环体 # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件... # 如果条件为假,那么循环体不执行 ...

  10. vsftp网络服务

    1. vsftp概述 FTP是File Transfer Protocol(文本传输协议)的简称,用于Internet上的文件的双向传输.使用FTP传输时,具有一定程度的危险性,因为数据在因特网上面是 ...