当前位置: 首页 > news >正文

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

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

    深拷贝的实现方法 :
    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

相关文章:

  • 长方形旋转计算最后的外层宽高,单元测试
  • HttpMediaTypeNotAcceptableException报错解决,状态码显示为406
  • 深度学习分类回归(衣帽数据集)
  • 98.在 Vue3 中使用 OpenLayers 根据 Resolution 的不同显示不同的地图
  • 【C++】数据类型
  • LLM中的transformer结构学习(二 完结 Multi-Head Attention、Encoder、Decoder)
  • Python之pyqt5生成计算机前端页面并运行
  • 零成本短视频爆款制造手册
  • Python正则表达式完全指南:从入门到精通
  • 使用AI一步一步实现若依前端(5)
  • Catia 转 StL:打通数字化设计与制造的关键纽带
  • TCP并发服务器
  • Vue 实现智能检测文字是否溢出,溢出显示省略号,鼠标悬浮显示全部【附封装组件完整代码+详细注释+粘贴即食】
  • Vue前端开发-Coupon组件
  • javaweb自用笔记:请求参数、响应、分层解耦、
  • 一二三应用开发平台——能力扩展:多数据源支持
  • 模板方法模式的C++实现示例
  • React基础之项目实战
  • 贵工程寝室报修系统的设计与实现
  • JavaScript 变量与常量全面解析
  • 兴业证券:下半年A股指数稳、结构牛,中国资产重估刚刚开始
  • 雀巢中国回应“巴黎水”丑闻报告:在中国销售的产品均符合相关法律法规要求
  • 人民日报任平:从“地瓜经济”理论到民营经济促进法,读懂中国经济的成长壮大之道
  • 外汇局:4月下旬外资投资境内股票转为净买入
  • 秦洪看盘|小市值股领涨,A股交易情绪复苏
  • 从《缶翁的世界》看吴昌硕等湖州籍书画家对海派的影响