目录
2. 数组的浅拷贝( new_arr.concat(arr) )
3. 对象的浅拷贝( Object.assign(new_obj, obj) )
一、定义
拷贝:就是赋值,把一个变量赋值给另一个变量,对变量的内容进行拷贝。
了解深拷贝和浅拷贝之前需要对基本数据类型和引用数据类型的内存上存储(栈/堆)的区别有清楚地认识,深拷贝和浅拷贝是针对于引用数据类型。
浅拷贝:拷贝后的数据会影响原数据
深拷贝:产生了新的数据,而不是对原数据的引用
判断依据:数据存放是对象在栈内存地址的引用还是对象的引用
二、举例🌰
1. 最简单的浅拷贝
//地址的拷贝,不产生新的数据
var arr = [1,2,4];
Var new_arr = arr;
new_arr[0] = '改';
console.log(arr, new_arr);
2. 数组的浅拷贝( new_arr.concat(arr) )
//只拷贝一层(深度不够)
let arr = ['chailo',2,null,undefined,function f() {},[5],[6],{obj: 'obj'}];
let new_arr = [].concat(arr)
new_arr[5] = ['改'];
new_arr[6][0] = '改';
new_arr[7].obj = '改';
console.log(arr,new_arr);