JavaScript分两种数据类型。
1.简单数据类型有:number, string, boolean, undefined和null
当声明一个简单数据类型的变量时,在内存中会把数据存在栈里。
2.复杂数据类型。Object

var student = new Person

  

当我创建一个实例的时候,会在内存中开辟一个空间,对象存放在堆里,student是一个内存地址,指向堆中的对象。

深拷贝和浅拷贝就是在存储复杂数据时产生的问题。

浅拷贝就是我只获取到了这个对象的内存地址,可以指向原对象。当我修改时,原对象也会改变。
深拷贝就是重新创建了一个空间,对象放在堆里,我修改原对象不影响我新创建的对象。

实际上在开发过程中,遇到了一个问题,就是有关于深浅拷贝的。

首先介绍一下开发背景。是一个后台管理项目。表格数据后有编辑页面,编辑页面与添加页面服用,利用了vue的父子传值,当我是添加时,父组件给子组件是一个空对象,当我是编辑时,传入当前表格一行的数据以对象的形式传给子组件。
子组件的方法。

 // 打开弹窗
dialogOpen() {
console.log('打开页面',this.expert)
this.$refs.form.resetFields();
if (this.expert.id) {
// 进入修改
this.form = this.expert
} else {
this.form = {};
}
},

  通过expert.id 判断是否是添加页面,如果是,把expert里的内容传给当前表单,如果不是,表单内容清空。

props: {
expert: Object,
value: Boolean
},

  

该组件接收的值

出现的问题就是:当我打开编辑弹窗后,并没有做任何修改关闭页面,列表页的当前列表数据变成空。

出现原因:当我进入编辑页面时,this.form = this.expert 是浅拷贝,复制了对象的地址。当我点击添加时,在父组件中给this.expert ={},此时,this.form就是空的,再点击编辑,form也是空的了。

解决后的代码

 // 打开弹窗
dialogOpen() {
console.log('打开页面',this.expert)
this.$refs.form.resetFields();
if (this.expert.id) {
// 进入修改
this.form = {...this.expert}// 深拷贝
} else {
this.form = {};
}
},

  

JavaScript数据存储和深浅拷贝实际运用的更多相关文章

  1. Python基础知识(六)------小数据池,集合,深浅拷贝

    Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: ​ 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : ​ 一个文 ...

  2. 6.Python初窥门径(小数据池,集合,深浅拷贝)

    Python(小数据池,集合,深浅拷贝) 一.小数据池 什么是小数据池 小数据池就是python中一种提高效率的方式,固定数据类型,使用同一个内存地址 小数据池 is和==的区别 == 判断等号俩边的 ...

  3. python基础知识四 小数据池,深浅拷贝,集合+菜中菜

    四.小数据池,深浅拷贝,集合+菜中菜 1小数据池 --缓存机制(驻留机制) ​ '==' 判断两边内容是否相等 ​ 'is' 基于内存地址进行判断是否相同 a = 10 b = 10 print(a ...

  4. Python 入门之代码块、小数据池 与 深浅拷贝

    Python 入门之代码块.小数据池 与 深浅拷贝 1.代码块 (1)一个py文件,一个函数,一个模块,终端中的每一行都是代码块 (代码块是防止我们频繁的开空间降低效率设计的,当我们定一个变量需要开辟 ...

  5. python学习Day6 元组、字典、集合set三类数据用法、深浅拷贝

    一.深浅拷贝 1.  值拷贝 ls1 = ls2  不开辟空间,指针跟着走.(直接将ls1中存放的地址拿过来,内存中不会开辟新的空间,所以你怎么变,我也跟着变.)(ls1内部的所有类型的值发生改变,l ...

  6. python变量存储和深浅拷贝

    python的变量及其存储 在高级语言中,变量是对内存及其地址的抽象.对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不 ...

  7. JavaScript -- 数据存储

    Cookie Web应用程序是使用HTTP协议传输数据的.HTTP协议是无状态的协议. 一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接.这就意味着服务器无法从连接上跟踪 ...

  8. python的小数据池和深浅拷贝

    小数据池 一种数据缓存机制,也称驻留机制 在同一代码块,相同的值不会开辟新的内存 特殊字符除外 小数据池只针对:在控制台时! 数字 :-5到256间的整数会被缓存 布尔值:都会缓存8 字符串 小于等于 ...

  9. day06——小数据池、深浅拷贝、集合

    day06 小数据池 小数据池--缓存机制(驻留机制),只是一种规格,不会实际的开辟一个空间 == 判断两边内容是否相等 ***** # a = 10 # b = 10 # print(a == b) ...

随机推荐

  1. HDU3480 Division——四边形不等式或斜率优化

    题目大意 将N个数分成M部分,使每部分的最大值与最小值平方差的和最小. 思路 首先肯定要将数列排序,每部分一定是取连续的一段,于是就有了方程 $\Large f(i,j)=min(f(i-1,k-1) ...

  2. Python全栈开发:Mysql(一)

    一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Serve ...

  3. wordpress 插件语法分析器

    在通过查看 apply_filters( 'ap_addon_form_args', array $form_args ) 的html body class中发现wp-parser 字样,就googl ...

  4. MySQL数据库CRUD命令用法

    数据库CRUD操作即添加(Create).读取(Read).更新(Update)和删除(Delete). 1. 添加操作也称插入操作,使用Insert语句,Insert语句可以用于几种情况: 插入完整 ...

  5. AutoIt自动化编程(4)【转】

    五.自动化操作轻松入门系列5 控件操作 然而,在真正实现自动化时仅靠上面的技术往往难以达到预期目的.下面开始进入最为重要的控件操作. 1.设置文本 在安装软件的过程中用户往往需要提供一些必需信息,比如 ...

  6. [JZOJ3177] 【GDOI2013模拟5】安全监控

    题目 描述 (样例都懒得发出来了) 题目大意 给你一个有向图,从111号点出发,绕一圈回来.这一圈中必须经过222号点. 问经过的最少的点数(不重复). 思考历程 一看就觉得是一道神题. 然后仔细观察 ...

  7. 图书-技术-SpringBoot:《Spring Boot2 + Thymeleaf 企业应用实战》

    ylbtech-图书-技术-SpringBoot:<Spring Boot2 + Thymeleaf 企业应用实战> <Spring Boot 2+Thymeleaf企业应用实战&g ...

  8. centos7 安装 python3

    sudo yum -y groupinstall "Development tools" sudo yum -y install zlib-devel bzip2-devel op ...

  9. webservice技术--服务器端

    1.webservice实现单点登录具体逻辑为 ①软通web端作为客户端,请求wi社区后台,进行登录请求 ②wi社区后台验证t,核实无误后,走登录逻辑,直接进入欢迎页 ③如果有错误,封装错误xml,返 ...

  10. Linux 下的终端

    终端: 1 虚拟终端 ctrl + alt + F(1-6) : ctrl + alt + F7 : 图形终端 启动图形终端 : Gnome  :  #startx   或者  #startx &am ...