js 对象深拷贝递归实现

news/2024/7/19 13:45:17 标签: js, html, 前端, es6
htmledit_views">

   const obj = {name:'changjk',family:{father:'zs',mother:'shh'},hobby:['打游戏','喝茶','打羽毛球']}

   //深拷贝

   

   const cloneObj=(obj)=>{

      const newObj={}

      for(const key in obj){

        if(Object.prototype.toString.call(obj[key]) === '[Object,Array]'){

          cloneObj(obj[key])

        }else if(Object.prototype.toString.call(obj[key]) === '[Object Object]'){

          cloneObj(obj[key])

        }else {

          newObj[key] = obj[key]

        }

      }

      return newObj

   }

   console.log(cloneObj(obj))


http://www.niftyadmin.cn/n/5716.html

相关文章

原来我们一直写的是违反面向对象编程风格的代码

众所周知,很多业务系统都是基于 MVC 三层架构来开发的,虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了面向对象编程风格,是一种彻彻底底的面向过程的编程风格,因此被有些人称为反模式(an…

对象的比较(下)

作者:~小明学编程 文章专栏:Java数据结构 格言:目之所及皆为回忆,心之所想皆为过往 目录 比较器的比较 equals的比较 三种方式的比较 比较器的比较 class Card {public int rank; // 数值public String suit; // 花色public…

04 C++循环控制-课后巩固实训

第1关:(控制计数器)打印钻石 任务描述 本关任务:输入为一个3~19之间的一个奇数n, 输出钻石图案,如下图所示,若输入不符合要求,则退出。 编程要求 根据提示,在右侧编辑器补充代码,在输入不符合要求时输出 wrong input!。 测试说明 平台会对你编写的代码进行测试。 …

3、传统的Synchronized锁

传统的Synchronized锁 首先提一个观点,线程就是一个单独资源类,是没有任何的附属操作的(我们直接用就ok了(线程其中包含两个东西:1、属性2、方法))也就是说我们去使用线程不再是之前的那种impl…

【C/C++】自定义类型 枚举联合

学习导航 写在前面 枚举 枚举类型的定义 枚举的使用 枚举的大小计算 枚举的优点 联合(共用体) 联合类型的定义 联合的内存分配 联合大小的计算 写在前面 我们知道的C语言中的自定义类型有: 结构 位段 枚举 联合 其中结构和位…

每日一个设计模式之【装饰器模式】

文章目录每日一个设计模式之【装饰器模式】☁️前言🎉🎉🎉🌻装饰器模式概述🌱装饰器模式的实现🍀透明装饰器模式🍀半透明装饰器模式🌲总结每日一个设计模式之【装饰器模式】 ☁️前…

SpringBoot集成Spring Security——【认证流程】

一、认证流程 上图是 Spring Security 认证流程的一部分,下面的讲解以上图为依据。 (1) 用户发起表单登录请求后,首先进入 UsernamePasswordAuthenticationFilter: 在 UsernamePasswordAuthenticationFilter中根据用户…

linux操作压缩软件

*.rpm形式的二进制软件包 安装:rpm -ivh *.rpm 卸载:rpm -e packgename注意:其中packagename如apache-devel-3.1.12-i386.rpm的packagename是:apache-devel 参数含义:i是安装,v是校验,h是显示安装进度 源码安装方式:rpm -rebuild *.src.rpm->cd /usr/src/dist/RPMS->rp…