首页 > 其他分享 >深copy对象

深copy对象

时间:2023-07-07 09:33:08浏览次数:37  
标签:return 对象 newObj re let key obj copy

function deepClone(obj) {
  if (obj === null) return null;
  if (typeof obj !== 'object') return obj;
  if (obj instanceof Date) {
    let date = new Date();
    date.setTime(obj.getTime());
    return date;
  }
  if (obj instanceof RegExp) {
    let re = new RegExp(obj.source);
    re.lastIndex = obj.lastIndex;
    return re;
  }
  let newObj = new obj.constructor();
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      newObj[key] = deepClone(obj[key]);
    }
  }
  return newObj;
}

 

标签:return,对象,newObj,re,let,key,obj,copy
From: https://www.cnblogs.com/panax/p/17533930.html

相关文章

  • TypeScript面向对象
    TypeScript面向对象面向对象是程序中一个非常重要的思想。面向对象很简单,简而言之就是程序之中所有的操作都需要通过对象来完成。一切皆对象接口TypeScript中的接口跟传统语言(比如Java)的接口有点差别对象可以隐式实现接口概念描述一个类型一个接口里面可以有:字段方法......
  • SpringBoot集成kafka收发消息——传递消息为对象
    目前springboot整合后的kafka,因为序列化器是StringSerializer,这个时候如果需要传递对象可以有两种方式方式一:可以自定义序列化器,对象类型众多,这种方式通用性不强。方式二:可以把要传递的对象进行转json字符串,接收消息后再转为对象即可,本项目采用这种方式JSON.toJSONString(user)......
  • ES6 的 新特性 4 剩余参数,对象值省略
    剩余参数用于声明不确定参数数量的函数functionsum(first,...args){console.log(first);//10console.log(args);//[20,30]}sum(10,20,30)箭头函数也可以用constsum=(...args)=>{lettotal=0;args.forEach(item=>total+=i......
  • go语言的"面向对象"
    面向对象定义面向对象三要素:封装:将属性(数据)和方法(操作)封装,提供访问控制,隐藏实现细节,暴露该暴露的继承:子类可以从父类直接获得属性和方法,减少重复定义。子类中如果与父类不同,可以自己定义新的属性和方法,也可以覆盖同名的属性和方法多态:前提是继承和覆盖,使得子类中虽然使用同......
  • 对象存储的方式对比
    一、对象存储的方式对比存储方式优点缺点服务器磁盘开发便捷,成本低扩展困难分布式文件系统容易实现扩容复杂度高第三方存储开发简单,功能强大,免维护收费二、分布式文件系统存储方式优点缺点FastDFS1、主备服务,高可用2、支持主从文件,支持自定......
  • Linux 虚拟文件系统四大对象:超级块、inode、dentry、file之间关系
    转载:Linux虚拟文件系统四大对象:超级块、inode、dentry、file之间关系-一口Linux-博客园(cnblogs.com)一:文件系统1.什么是文件系统?操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。通常文件系统是用于存储和组织文件的一种机制,便于对文件进行......
  • Java面向对象
    Java面向对象什么是面向对象1.面向过程步骤简单清晰2.面向对象分类的思维模式适合处理复杂的问题3.oop以类的方式组织代码,以对象的组织(封装)数据4.特点:抽象5.特性:封装、继承、多台回归方法的定义和调用1.方法的定义1.return代表方法结束了......
  • 面向对象(java)
    一、定义 二、注意事项:一个java文件中最好只写一个类;  三、封装(1)对象代表什么,就得封装对应的数据,并提供数据对应的行为;(2)如果加了static,就是类的变量(类共享),而不是实例变量了;......
  • 62.对象复用的了解,零拷贝的了解
    62.对象复用的了解,零拷贝的了解1.对象复用对象复用是指将已经创建的对象进行重复使用,而不是创建新的对象。在面向对象编程中,对象复用可以通过以下几种方式实现:1.对象池:对象池是一种常见的对象复用方式,它可以将已经创建的对象保存起来,并在需要时将其重新使用。2.模板类和模板对......
  • 深入理解不可变对象
    前言说到不可变对象,想必大部分人都不会陌生。Java程序员在日常开发过程中100%会用到的String对象就属于不可变对象吗,今天我们就来聊聊不可变对象这个话题。什么是不可变对象《EffectiveJava》中是这样定义不可变对象的:不可变对象(ImmutableObject):对象一旦被创建后,对象所......