深拷贝和浅拷贝

103 阅读1分钟

javaScript中存在两大数据类型

 基本数据类型 : Number String null  undefined Boolean    ----存储与栈中
 引用数据类型化 : Array Object function   -----存储在堆中
 引用数据类型的变量是指向 引用数据存储在堆中的地址 


1. 浅拷贝 :  浅拷贝如果是 基本数据类型直接拷贝数据的值 ,如果是引用数据类型拷贝的是指向他堆存储的地址 
 
   浅拷贝的方法 : Object.assign  Array.slice()  Array.concat() 扩展运算符


2.深拷贝 : 开辟一个新的栈 两个对象的属性全部相同 但是地址不同 修改其中一个对象时 改变不了另一个对象的值

   深拷贝的方法: _.cloneDeep() JSON.parse(JSON.stringify()) 手写递归循环
   JSON.parse(JSON.stringify()----这种方式存在弊端,会忽略undefinedsymbolfunction