当前位置: 代码迷 >> 综合 >> JS面试知识点5-浅拷贝深拷贝
  详细解决方案

JS面试知识点5-浅拷贝深拷贝

热度:23   发布时间:2024-02-27 09:16:34.0

因为对象赋值的时候,复制的是地址值,所以会出现一方修改了,其他都被修改的问题。

浅拷贝就是为了解决这个问题。

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,函数,对象进行循环引用会报错)

  相关解决方案