JavaScript中浅拷贝和深拷贝的区别

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

JavaScript中浅拷贝和深拷贝的区别

宋阿慧の小跟班吖   2020-01-02 我要评论

JavaScript数据类型

基础数据类型:保存在栈内存中的简单数据段 ,有undefined,boolean,number,string,null
引用数据类型:Array,object,Function保存在堆内存空间中

var a1 = 0; var a2 = 'this is str'; var 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 = 80 ; console.log(n.a) // 80

总结:

浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存;   

深拷贝(deep copy):复制并创建一个一摸一样的对象,不共享内存,修改新对象,旧对象保持不变;实现深拷贝主要有2种方法

(1)递归

(2)JSON.stringify结合JSON.parse

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们