我试了... 这种方法 深拷贝 是不是说就能替代 深拷贝函数deepClone了

来源:7-3 对象扩展:Rest & Spread

微微一笑很闪人

2021-12-07

这种方法和deepClone 这种深拷贝封装的方法 有什么区别吗

let obj1 = {
    a: {
      c: /a/,
      d: undefined,
      b: null,
    },
    b: function () {
      console.log(this.a);
    },
    c: [
      {
        a: "c",
        b: /b/,
        c: undefined,
      },
      "a",
      3,
    ],
  };
  let obj2 = {
    ...obj1
  }
  obj3 = JSON.parse(JSON.stringify(obj1))
  console.log(obj2);
  // obj2.b()
  console.log(obj3)
写回答

2回答

喵咪老师

2021-12-09

obj3 = JSON.parse(JSON.stringify(obj1))

这种深拷贝 拷贝 Date类型 就会转为字符串了。

所以不大好

1
0

谢成

2021-12-08

1、扩展运算符属于浅拷贝

2、JSON.parse(JSON.stringfy(xxx)) 属于深拷贝,但对于一些特殊情况也会被忽略,比如function、symbol

1
1
微微一笑很闪人
好吧 老师我又回去重看了下一下 7-3 对象扩展 这节6分58秒的时候您说...这是深拷贝的。现在明白了
2021-12-15
共1条回复

JavaScript ES(6-11)全版本语法 前端都需要的基础课

前端无门槛学习,从ES6到ES11,一套课程掌握JS最新语法

1329 学习 · 296 问题

查看课程