目录

JSON.parseJSON.stringify深拷贝不会复制函数

目录

JSON.parse(JSON.stringify())深拷贝不会复制函数

  1. 深拷贝

    是指创建一个新对象,并递归地复制原对象中所有层级的属性和值,从而确保新对象与原对象完全独立

    深拷贝的实现方法 :

    使用 `JSON.parse(JSON.stringify())

    函数会被忽略复制,比如,下面的对象的formatter函数深拷贝以后就不在了

        {
          name: "笔数",
          type: "value",
          axisLabel: {
            formatter: function (value) {
              console.log('value: ', value);
              return value + 'kg';
            }
          }
        },
  • JSON.parse(JSON.stringify())会导致:
  • 无法处理函数 :函数会被忽略。
  • 无法处理特殊对象类型 :如 DateRegExpMapSet 等。
  • 无法处理循环引用 :会抛出错误。
  • 丢失原型链 :新对象的原型链会被重置为 Object.prototype
  1. 浅拷贝

    只复制对象的第一层属性。如果属性值是对象(如 address ),它会复制该属性值的对象的引用,而不是对象的内容

    const original = {
      age: 25,
      address: {
        city: "Moe",
      }
    };
    
    
    shallowCopy.address.street = "New Street";
    console.log(original.address.street); // 输出:New Street