深拷贝和浅拷贝

说起深拷贝和浅拷贝,首先我们来看两个栗子

// 栗子1

var a = 1,b=a;

console.log(a);

console.log(b)

b = 2;

console.log(a);

console.log(b)

// 栗子2

var obj1 = {x: 1, y: 2}, obj2 = obj1;

console.log(obj1) //{x: 1, y: 2}

console.log(obj2) //{x: 1, y: 2}

obj2.x = 2; //修改obj2.x

console.log(obj1) //{x: 2, y: 2}

console.log(obj2) //{x: 2, y: 2}

按照惯性思维,栗子1中obj1应该跟a一样,不会因另外一个值的改变而改变的啊,而这里却是obj1跟着obj2的改变而改变了?同样都是变量,怎么就表现不一样了呢?难道存在等级上的优劣?此处需要沉思一小会。要解决这个问题,就要引入一个JS中基本类型和引用类型的概念了。

基本类型和引用类型

ECMAScript变量包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。而引用类型值是指那些保存堆内存中的对象,意思是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。

两类数据的保存方式

从上图可以看到,栈内存主要用于存

vue对象深拷贝_浅谈深拷贝和浅拷贝相关推荐

  1. java对象头_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  2. java方法区对象类型_浅谈Java内存区域与对象创建过程

    一.java内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则 ...

  3. python判断两个对象是否为相等使用的运算符是_Python入门_浅谈逻辑判断与运算符...

    这是关于Python的第6篇文章,主要介绍下逻辑判断与运算符. (一) 逻辑判断: 如果要实现一个复杂的功能程序,逻辑判断必不可少.逻辑判断的最基本标准:布尔类型. 布尔类型只有两个值:True和Fa ...

  4. 《计算机辅助教学及应用实践研究》,《论文_浅谈计算机辅助教学(定稿)》

    <论文_浅谈计算机辅助教学(定稿)> (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 摘要:计算机辅助教学中要用到多媒体课件 ...

  5. 父子组建传值_浅谈Vue父子组件和非父子组件传值问题

    本文介绍了浅谈Vue父子组件和非父子组件传值问题,分享给大家,具体如下: 1.如何创建组件 1.新建一个组件,如:在goods文件夹下新建goodsList.vue goodsList组件 expor ...

  6. java list数组排序_浅谈对象数组或list排序及Collections排序原理

    常需要对list进行排序,小到List,大到对自定义的类进行排序.不需要自行归并或堆排序.简单实现一个接口即可. 本文先会介绍利用Collections对List进行排序,继而讲到Collection ...

  7. vue 给checkbox 赋值_浅谈vue中关于checkbox数据绑定v-model指令的个人理解

    vue.js为开发者提供了很多便利的指令,其中v-model用于表单的数据绑定很常见, 下面是最常见的例子: {{msg}} js里data初始化数据 new Vue({ el: "#myA ...

  8. java 对象之间转换_浅谈java对象之间相互转化的多种方式

    浅谈java对象之间相互转化的多种方式,对象,属性,参数,赋值,不支持 浅谈java对象之间相互转化的多种方式 易采站长站,站长之家为您整理了浅谈java对象之间相互转化的多种方式的相关内容. 第一种 ...

  9. python的re2和re区别_浅谈Python中re.match()和re.search()的使用及区别

    1.re.match()fvk免费资源网 re.match()的概念是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None.fvk免费资源网 包含的参数如下: ...

最新文章

  1. Android SurfaceView 黑背景的处理方法
  2. Android短信管家视频播放器代码备份
  3. 和lock一起学beego 博客系统开发为例(六)
  4. LeetCode 78. 子集
  5. oracle多久断开连接,Oracle自动断开连接
  6. leetcode 454. 4Sum II | 454. 四数相加 II(Java)
  7. 链表题目---4 删除链表中重复的结点 和 判断链表是否为回文链表
  8. vue过滤器微信小程序过滤器和百度智能小程序过滤器
  9. 不懂 NumPy 算什么 Python 程序员? | CSDN 博文精选
  10. 【Linux】bash: groupadd: command not found a
  11. 计算机视觉常用图像软件对比和分析
  12. mysql commit用法_sql commit用法
  13. 深入 CoreML 模型定义
  14. 网络工程师_记录的一些真题_2017上半年上午
  15. Android——excise(用线性布局、表格布局、相对布局做发送邮件界面)
  16. 综合案例-快报模块列表制作
  17. 关于我所能改的常用软件的背景图片
  18. C++ char和uchar区别
  19. 模拟电路技术之基础知识(二)
  20. Your project path contains non-ASCII characters. 解决办法

热门文章

  1. 使用axios进行下载Excel文件
  2. ipad air 2 使用itunes恢复更新出现3014解决方法
  3. 双隐藏层BP网络的matlab仿真,求遗传算法优化含有两个隐含层的BP神经网络的matlab程序...
  4. 项目实训----Unity多人游戏开发----第十篇
  5. Modelsim中do文件的使用、读写文件数据
  6. Citrix 知识中心Top10 - 2012年9月 包括KB、白皮书、补丁、演讲以及工具。
  7. 微信小游戏真机调试卡在100%
  8. C#调用Halcon并输出圆心坐标
  9. ZABBIX修改端口流量监控阀值
  10. Linux 设置VGA模式