深复制:直接将数据复制给对应的变量
浅复制:将数据的地址复制给对应的变量

深复制与浅复制,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,如果B没变,那就是深拷贝。

js中基本类型的赋值为深复制,而引用类型的赋值为浅复制。

浅复制:(引用类型的赋值)

        var a = [0,1,2];var b = a;console.log(a);//输出0,1,2console.log(b);//输出0,1,2b[0] = 10;console.log(a);//输出10,1,2 因为是浅复制,地址中的值改变console.log(b);//输出10,1,2var a = [0,1,2];b[0] = 11;console.log(a);//输出0,1,2 因为重新var了一个a,重新赋值了地址console.log(b);//输出1,1,2

深复制:(基本类型的赋值)

     var a = 10;var b = a;console.log(a);//输出10console.log(b);//输出10a = 20;console.log(a);//输出20console.log(b);//输出10

深复制实现方法:

1.递归

  //深复制function clone(target,source) {for (var key in source) {if (source[key] instanceof Object) {target[key]  = new source[key].constructorclone(target[key],source[key])}else {target[key] = source[key]}}}var lucy = {name:'lucy',age: 18,favs: ['唱歌' , "跳舞", "打游戏"]}var lily = {}clone(lily,lucy)console.log(lily)//输出和lucy一样的内容

2.JSON实现深复制

//JSON方法var tar = {}var sour = { a: 1, b:2}tar = JSON.parse(JSON.stringify(sour))console.log(tar)//输出sour值

3.第三方库实现深复制lodash

//先在前面标签中引用
<script type="text/javascript" src="https://cdn.bootcss.com/lodash.js/4.17.11/lodash.min.js">
</script>
//之后使用
//lodash方法实现深复制var obj = [{'a':1},{'b':2}]console.dir(_)var deep = _.cloneDeep(obj)console.log(deep)//输出obj内容console.log(deep[0] === obj[0])//输出false

JavaScript深复制和浅复制相关推荐

  1. php对象当参数传递 php深复制和浅复制

    把对象当参数传递给方法,在方法里改过对象后,影响到外面的对象  因为对象是引用传递过去的 class Book {public $name;public function __construct($n ...

  2. python列表浅复制_Python列表的深复制和浅复制示例详解

    一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码: l1 = [5, 4, 3, 2, 1] # 用 ...

  3. C#中的深复制和浅复制(在C#中克隆对象)

    C#中的深复制和浅复制(在C#中克隆对象) 转载于:https://www.cnblogs.com/dalovess/p/7002947.html

  4. python list 深复制_Python列表的深复制和浅复制示例详解

    免费资源网,https://freexyz.cn/ 一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码 ...

  5. C++学习基础七——深复制与浅复制

    C++学习基础七--深复制与浅复制 一.深复制与浅复制基本知识 深复制和浅复制,又称为深拷贝和浅拷贝. 深复制和浅复制的区别如下图1所示: 图1 图1表示的是,定义一个类CDemo,包含int a和c ...

  6. 深复制VS浅复制(MemberwiseClone方法介绍)

    MemberwiseClone方法,属于命名空间System,存在于程序集 mscorlib.dll中.返回值是System.Object.其含义是:创建一个当前object对象的浅表副本. MSDN ...

  7. Objective-C 深复制和浅复制与NSCopying协议

    1.简单复制只能实现浅拷贝:指针赋值,使两个指针指向相同的一块内存空间,操作不安全. 2. Foundation类已经遵守了<NSCopying>和 <NSMutableCopyin ...

  8. iOS 集合的深复制与浅复制

    2019独角兽企业重金招聘Python工程师标准>>> 概念 对象拷贝有两种方式:浅复制和深复制.顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针:深复制是直接拷贝整个对 ...

  9. IOS学习笔记十八(copy、mutableCopy、NSCopying、NSMutableCopy、深复制、浅复制)

    1. copy.mutableCopy方法 copy方法返回对象的不可修改的副本 mutableCopy方法返回的对象可修改的副本 1).测试demo int main(int argc, char ...

最新文章

  1. 【ACM】杭电OJ 2024
  2. 【C 语言】字符串模型 ( strstr-do…while 模型 )
  3. 结构体中的自然对界法则
  4. java date 时分秒_java Date 获得时分秒代码
  5. poj3233(矩阵快速幂的和)
  6. memcmp与strcmp区别
  7. android开发我的新浪微博客户端系列教程
  8. 【Python基础】with语句
  9. python学爬虫、还没放出来_Python 爬虫学习没思路?可以看看这篇文章
  10. 华为NP课程笔记23-VRRP
  11. 在微软工作有多舒服?
  12. div可拖拽移动js方法
  13. 走进小程序【八】微信小程序中使用【Vant组件库】
  14. python数据分析与可视化【一】python基础实例
  15. jtable 表头 透明_和田玉的韧性和透明度如何?你了解吗?它们其实是这样的!...
  16. 服务器做两个VD可以装系统,华为RH2288V5服务器创建多个VD(Virtual Disk)
  17. 电气成套设备制造企业项目管理难点及解决方案
  18. php使用redis消息队列swoole,EasySwoole中利用redis实现消息队列
  19. 网站日志分析工具汇总
  20. 拍出天价,乔布斯1973年求职申请表曝光

热门文章

  1. [抄录]李后主的浪淘沙
  2. Centos7下安装Docker(详细的新手装逼教程)
  3. 亿万富翁“枪下留人”悬疑
  4. 基于一阶微分的锐化滤波器---梯度算子(常用于工业检测,产品缺陷检测)
  5. Ubuntu上安装运行 rotated_maskrcnn
  6. 网络同步——帧同步和状态同步解析
  7. 海明码(汉明码、Hamming Code)
  8. Android系统基础架构
  9. 切换摄像头操作(前置、后置)
  10. 左耳听风 第二十九周