关于深拷贝的一点了解

了解深/浅拷贝需要了解一些前置的知识,那就是堆和栈和js中数据类型之间的关系,我的理解比较的简单粗暴:

js中基本数据类型的数据(String,Number,Boolean,undifined,null,Symbol)统一存储在栈内存中;

然后引用类型的数据(Object,Array,Function)因为充满了各种不确定性,所以就分开存储了,对于引用类型来说栈内存 存储的是一个个内存地址对应着我们的变量名、函数名。而堆内存则存储着我们的数据(对应的值),每个内存地址(变量名...)对应一个堆内存,通过内存地址寻找到堆内存里面的数据。
这样的关系就跟钥匙对应一把锁,每把锁锁了一个箱子,箱子里是我们的数据,拿到钥匙才能打开对应的锁拿到数据,看图:
关于深拷贝的一点了解_第1张图片
关于堆和栈,更专业的解说在这里->详解堆和栈
再讲深/浅拷贝: 我理解的浅拷贝就是只复制栈内存中的数据/或者地址,而深拷贝就是找到栈内存里对应的堆内存的数据给拷贝下来,这样两个引用类型的数据就互不影响了。
示例:




  
  
  
  Document


  

欢迎指正!

你可能感兴趣的:(javascript深拷贝)