对象的深拷贝和浅拷贝

126 阅读1分钟

基本数据类型和引用数据类型

基本数据类型:String , Number , Null , Boolean , Undefined , Symbol.

      基本数据类型是直接存储在栈中的数据

引用数据类型 : Array , Object.

      引用数据类型存储的是该对象在栈中引用,真实的数据存储在内存中

深拷贝和浅拷贝的概念

浅拷贝: 仅仅复制对象的引用,而不是对象本身

深拷贝:把复制的对象所引用的全部对象都复制一遍

浅拷贝:

**       Object.assign({},obj):方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象,Object.assign()进行的是浅拷贝,拷贝的是对象的属性的引用,而不是对象本身**

Array.prototype.concat():concat()是数组的一个内置方法,用户合并两个或者多个数组,这个方法不会改变现有数组,而是返回一个新数组

** Array.prototype.slice():slice()也是数组的一个内置方法,该方法会返回一个新的对象,slice()不会改变原数组**

obj展开运算符:展开运算符是ES6中新提出来的一种运算符,在拷贝数组、对象以及拼接数组等方面都可以使用,这步我们也可以尝试下使用const obj2 = {...obj1}的形式进行浅拷贝

深拷贝

Json.parse(Json.Stringify(obj)):JSON.stringify():把一个js对象序列化为一个JSON字符串,JSON.parse():把JSON字符串反序列化为一个js对象