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())会导致:

  • 无法处理函数:函数会被忽略。

  • 无法处理特殊对象类型 :如 Date、RegExp、Map、Set 等。

  • 无法处理循环引用:会抛出错误。

  • 丢失原型链 :新对象的原型链会被重置为 Object.prototype

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

    复制代码
    const original = {
      age: 25,
      address: {
        city: "Moe",
      }
    };
    
    
    shallowCopy.address.street = "New Street";
    console.log(original.address.street); // 输出:New Street
相关推荐
“AI国潮设计-小江”15 分钟前
【AIGC实战】Python+SDXL批量生成“潮汕英歌舞不倒翁”IP | 角色一致性与多场景融合方案,附完整代码
开发语言·人工智能·python·prompt·aigc
沙蒿同学19 分钟前
不引 Ghostscript:我用纯 Go 给 PDF 做了一场「压缩手术」
前端·后端·github
传奇开心果编程21 分钟前
【Rust入门练中学】第6课:结构体与方法
开发语言·rust·结构体·编程语言理论·结构体方法·编程通用语言
Linux_cy24 分钟前
服务器管理工具哪个好用?我用了七八个
运维·服务器·javascript·python·ssh·面板·gmssh
code tsunami1 小时前
【无标题】
开发语言·python
变与不变8061 小时前
jQuery细节以及使用应用场景
前端·javascript·jquery
CodeGL1 小时前
10、Python基础之进程和线程
开发语言·python
TechWayfarer2 小时前
PHP漏洞被利用,怎么揪出攻击IP?
开发语言·python·tcp/ip·网络安全·php
SailingCoder3 小时前
【封闭结束1】端到端交付:Agent 一次请求如何走完全链路
前端·安全·ai·面试·agent·harness
卡卡~~4 小时前
“101计划”核心课程实践教材《数据实验结构指导-C++语言版》题目集
开发语言·c++·学习·算法