本篇文章为大家展示了javascript中浅拷贝和深拷贝的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言1. 基础数据类型: undefined、bo
本篇文章为大家展示了javascript中浅拷贝和深拷贝的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
1. 基础数据类型: undefined、boolean、number、string、null,保存在栈内存中的简单数据
2. 引用数据类型:Array、对象、Function,保存在堆内存空间中
如下图:
注释:
a1 = 0;a2 = 'this is str';a3 = null, 存放在栈内存中;
var c =[1,2,3] 与 var d = {m:20} ,**变量名与内存地址存储在栈内存中**,**但是**[1,2,3]与{m:20} 作为**对象存储在堆内存中**;
var a = 20;
var b = a;
如下图:
var m ={ a:10, b:20};
var n = m;
m与n指向同一个内存空间,当m或者n改变时,另一个也跟着改变
如
m.a = 'WEB秀';
console.log(n.a);
// 输出 web秀
怎么样使引用数据类型有各自独立的内存空间???
采用递归的方法拷贝对象
## 奇技淫巧
利用**基础数据类型**方式,把对象转换成字符串,进行复制。具体点说就是,用JSON.stringify与jsON.parse实现深拷贝。原因是JSON.stringify(obj)转换成字符串,变成基本数据类型,基本类型拷贝是直接在栈内存新开空间,直接复制一份名-值,不影响之前的对象。请看代码:
1. 浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存;
2. 深拷贝(deep copy):复制并创建一个一摸一样的对象,不共享内存,修改新对象,旧对象保持不变;
实现深拷贝主要有2种方法
(1)递归
(2)JSON.stringify结合JSON.parse
上述内容就是JavaScript中浅拷贝和深拷贝的区别是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网node.js频道。
--结束END--
本文标题: JavaScript中浅拷贝和深拷贝的区别是什么
本文链接: https://lsjlt.com/news/77453.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0