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
相关推荐
美团技术团队9 分钟前
报名 | 美团技术沙龙第86期:多业务场景下,美团如何做性能优化
前端
Heartoxx18 分钟前
c语言-指针与一维数组
c语言·开发语言·算法
hqxstudying20 分钟前
Java创建型模式---原型模式
java·开发语言·设计模式·代码规范
charlie11451419136 分钟前
如何使用Qt创建一个浮在MainWindow上的滑动小Panel
开发语言·c++·qt·界面设计
Rrvive39 分钟前
localhost 和 127.0.0.1 的核心区别
前端
蓝倾39 分钟前
如何使用Python通过API接口批量抓取小红书笔记评论?
前端·后端·api
極光未晚41 分钟前
JavaScript BOM 对象:浏览器的隐形控制塔
前端·javascript·源码
天涯学馆43 分钟前
网站秒变 App!手把手教你搞定 PWA
前端·javascript·面试
神仙别闹43 分钟前
基于Python实现LSTM对股票走势的预测
开发语言·python·lstm
uu_code0071 小时前
Android接入Pixelfree美颜SDK技术指南
前端