亲宝软件园·资讯

展开

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

宋阿慧の小跟班吖 人气:2

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

加载全部内容

相关教程
猜你喜欢
用户评论