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
相关推荐
潇潇云起几秒前
mapdb
java·开发语言·数据结构·db
prettyxian3 分钟前
【QT】信号与槽基础:手动连接的原理与实践
开发语言·qt
林恒smileZAZ4 分钟前
Electron 的西天取经
前端·javascript·electron
傻乐u兔5 分钟前
C语言初阶————结构体
c语言·开发语言
weixin_445054725 分钟前
力扣热题52
开发语言·python
逑之8 分钟前
C语言笔记2:C语言数据类型和变量
c语言·开发语言·笔记
这就是佬们吗9 分钟前
告别 Node.js 版本冲突:NVM 安装与使用全攻略
java·linux·前端·windows·node.js·mac·web
何中应9 分钟前
@Autowrited和@Resource注解的区别及使用场景
java·开发语言·spring boot·后端·spring
源代码•宸10 分钟前
Golang语法进阶(Context)
开发语言·后端·算法·golang·context·withvalue·withcancel
一条咸鱼_SaltyFish10 分钟前
[Day16] Bug 排查记录:若依框架二次开发中的经验与教训 contract-security-ruoyi
java·开发语言·经验分享·微服务·架构·bug·开源软件