目录
数组、对象浅拷贝
数据类型可分为基本数据类型和引用数据类型。基本数据类型直接存储实际数据,而引用数据类型存储的是对象在栈中的引用,其真实数据存放在堆内存里。
基本数据类型存放的是实际数据,可直接复制。在赋值操作 a = b 中,是将 b 保存的数据赋值给 a,需要区分 b 中数据的类型:若为基本数据类型,赋值的就是值本身;若为引用数据类型,赋值的则是引用地址。
示例代码如下:
let num1=123;
let num2=num1;
num2=234;
console.log(num1,num2);//123 234
let obj1={
name:'Lucy',
age:23
}
let obj2=obj1;
obj2.name='Jack';
console.log(obj1);//{name: "Jack", age: 23}
console.log(obj2);//{name: "Jack", age: 23}
浅拷贝和深拷贝
浅拷贝:对于基本数据类型,会直接拷贝其值;若包含引用数据类型(如对象),则仅拷贝其引用,对原对象的修改会反映到拷贝对象上。
深拷贝:会递归拷贝对象的所有层级,即使对象嵌套,也会完整复制。
数组浅拷贝:常用的数组浅拷贝方法是 arr.concat()