深浅拷贝问题

简介: 深浅拷贝问题

JS数据的存储机制分别为:堆、栈

系统的数据类型大概分为普通类型:staing、number 和引用类型arr[]、function(){}。

数据类型在构建后会有对应指针,在栈的范围里,如果a变量创建了一个对象,创建的b对象等于a,此时b对象内的值会引用a值,这两个值是分别独立的。但如果使用引用类型,a创建了一个数组,此时数据的值会到堆的区块内,如果创建一个对象b=a,那么b的值会共用堆里面a的值,此时就会出现一个问题,因为他俩的值是共用的,更改b的值会影响到a。

浅拷贝:引用类型数据当被重新复制的时候,由于存储机制问题,只赋值到了引用类型的内存指针,导致内存指针指向同一内存,当引用类型进行数据变更的时候,影响原数据。

在一些特定场合下,我们从后台接到的数据可能不是直接的数组,它可能是一个字符串,我们拿到后段传来的值之后可以按照自己的框架体系来进行数据重组。获取到大批量数据后,数据需要遍历到对应的模块,此时需要用到数组。

JSON.stringfiy() :序列化:将一个对象序列化为一个字符串

JSON.parse() :反序列化将一个序列化的字符串还原成对象

使用场景:

js cookie保存数据

处理后端接口[{"aaaa":"admin",data:"",msg:""}]


目录
相关文章
|
6天前
|
存储
如何理解结构体的浅拷贝与深拷贝
结构体的浅拷贝仅复制对象的引用或基本数据类型值,不创建新对象;深拷贝则会递归地复制所有对象及其引用的对象,形成完全独立的新对象。两者主要区别在于是否共享内部对象。
|
5月前
|
存储
类与对象\深复制与浅复制
类与对象\深复制与浅复制
24 0
|
6月前
|
C++
C++什么是深浅拷贝,深浅拷贝的区别?
C++什么是深浅拷贝,深浅拷贝的区别?
|
12月前
|
JavaScript
一文弄懂浅拷贝和深拷贝
一文弄懂浅拷贝和深拷贝
49 0
|
人工智能 JavaScript 前端开发
为什么要用深浅拷贝、什么是深浅拷贝、以及如何实现
首先我们要明白一点,js中数据类型分为: 基本数据类型 (Number, String, Boolean, Null, Undefined, Symbol) 对象数据类型 ( Object )** 引用数据类型的值是保存在栈内存和堆内存中的对象。栈区内存保存变量标识符和指向堆内存中该对象的指针。当寻找引用值时,解释器会先寻找栈中的地址。然后根据地址找到堆内存的实体
109 0
为什么要用深浅拷贝、什么是深浅拷贝、以及如何实现
|
存储 JavaScript 前端开发
深拷贝浅拷贝有什么区别?怎么实现深拷贝?
深拷贝浅拷贝有什么区别?怎么实现深拷贝?
91 0
浅说一下深拷贝和浅拷贝,如何自己实现一个深拷贝?
浅说一下深拷贝和浅拷贝,如何自己实现一个深拷贝?
61 0
|
编译器 C++
【C++学习】类和对象 | 拷贝构造 | 探索拷贝构造函数为什么需要引用传参 | 深拷贝 | 初识运算符重载
【C++学习】类和对象 | 拷贝构造 | 探索拷贝构造函数为什么需要引用传参 | 深拷贝 | 初识运算符重载
129 0
|
编译器
拷贝构造与深浅拷贝
一、拷贝构造函数 二、拷贝初始化 三、深浅拷贝
70 0