因为对象赋值的时候,复制的是地址值,所以会出现一方修改了,其他都被修改的问题。
浅拷贝就是为了解决这个问题。
let a = {age: 22};
let b = a;
a.age = 11;
console.log(b.age); //11
-
浅拷贝的方法:
1、 方法1: Object.assign()
let a = {age:22}
let b = Object.assign({},a);
a.age = 11;
console.log(b.age); //22
2、方法2:三点运算符
let a = {age: 22};
let b = { ...a };
a.age = 11;
console.log(b.age) //22
3、浅拷贝的问题:问题是只能解决第一层的问题,如果第二层是对象则无法解决。所以需要使用深拷贝
let a = {age: 22, jobs:{name: 'FF'}};
let b = Object.assign({},a);
a.jobs.name = 'FE';
console.log(b.jobs.name) //FE
-
深拷贝的方法
1、方法1:JSON序列化(但问题是:会忽略undefined,Symbol,函数,对象进行循环引用会报错)