1.递归实现深拷贝

function deepClone(obj){let objClone = Array.isArray(obj)?[]:{};if(obj && typeof obj==="object"){for(key in obj){if(obj.hasOwnProperty(key)){//判断ojb子元素是否为对象,如果是,递归复制if(obj[key]&&typeof obj[key] ==="object"){objClone[key] = deepClone(obj[key]);}else{//如果不是,简单复制objClone[key] = obj[key];}}}}return objClone;
}

2.借用JSON对象的 parse 和 stringify 的深拷贝(不可拷贝值为function或着undefined)

function deepClone(obj){let newObj = JSON.stringify(obj);let objClone = JSON.parse(newObj);return objClone;
}

实现深拷贝的常用方法相关推荐

  1. 克隆,深拷贝,浅拷贝

    克隆/拷贝/复制 它们是同个东西 拷贝对象/克隆对象 浅拷贝 只拷贝对象表层的属性,引用值还是指向同个地址 修改引用值会相互影响 var person1 = {name:'张三'}function c ...

  2. 浅析Js中对象与数组的深拷贝

    一级属性深拷贝,形如这样的对象我们可以使用Object.assign()对其进行深拷贝. let obj = {a:'123'} let copy = Object.assign({},a) cons ...

  3. 2021年秋招前端复盘

    文章目录 1.实现元素的居中 2.flex布局以及属性 3.ES6新特性 4.数组有哪些方法?map和filter的区别?for of和for in的区别? 5.js异步有哪些方式?promise和a ...

  4. 深拷贝和浅拷贝开发常用方法总结

    前言 在前端开发的工作中经常需要对数据进行处理,这时候会经常使用到浅拷贝和深拷贝先拷贝原有数据再进行处理,以下就是常用的方法总结,我将以代码的形式来带大家去使用和理解这些方式 一.浅拷贝常用方法 1. ...

  5. 【JavaScript】23_浅拷贝和深拷贝 + 对象的复制 + 数组的常用方法

    7.浅拷贝和深拷贝 浅拷贝(shallow copy) 通常对对象的拷贝都是浅拷贝 浅拷贝顾名思义,只对对象的浅层进行复制(只复制一层) 如果对象中存储的数据是原始值,那么拷贝的深浅是不重要 浅拷贝只 ...

  6. 深入浅出的“深拷贝与浅拷贝”

    js中的浅拷贝与深拷贝,只是针对复杂数据类型(object, Array)的复制问题.浅拷贝和深拷贝都可以实现在已有对象上再生出一份的作用.但是对象的实例是存储在堆内存中然后通过一个引用值只操作对象, ...

  7. js object 常用方法总结

    转载自  js object 常用方法总结 Object.assign(target,source1,source2,...) 该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标 ...

  8. python各种数据类型的常用方法_Python之数据类型的常用方法

    常用方法汇总 1. int类 方法汇总: 变量名.to_bytes('数字',"little"\"big") # (把数字转换成bytes) # 数字表示转换后 ...

  9. JS对象拷贝:深拷贝和浅拷贝

    摘要:对象拷贝,简而言之就是将对象再复制一份,但是,复制的方法不同将会得到不同的结果. 本文分享自华为云社区<js对象深浅拷贝,来,试试看!>,作者: 北极光之夜.. 一.速识概念: 对象 ...

最新文章

  1. python查看和更改当前工作目录
  2. 百度Q2日进2.9个亿,新基建推动Apollo上位!李彦宏开招管培生:亲自选亲自带...
  3. Oracle 触发器使用实例
  4. ant vue 树形菜单横向显示_Vue--组件Ant- 树形结构菜单
  5. win10无法连接wifi_手机连接WIFI但是无法上网?3个办法帮您解决!
  6. nginx 重定向_虚拟机中安装nginx,重定向到resin
  7. linux防火墙阻断目的,基于Linux防火墙的内部邮件监控与阻断系统
  8. 《c专家编程》笔记--define和typedef的区别
  9. C# 获取配置文件节点值
  10. SLAM - 01 - 分类
  11. ipython的使用
  12. linux脚本能轮循吗,通过Linux定时任务实现定时轮询数据库及发送Http请求
  13. linux系统函数 utime,utime函数
  14. 身份证验证判断、身份证正则表达式、15位、18位身份证验证
  15. SU-03T语音模块的使用(小智语音控制LED灯)
  16. Python轻松实现PDF格式转换(附详细源码)
  17. 听说火狐要换Logo,网友们掀起了一场“战争”
  18. EasyUI/TopJUI可编辑表格的列根据返回数据判断是使用 combobox 还是 numberbox
  19. Android Studio使用过程中Java类突然报红,但项目可运行解决方案
  20. 【linux内核分析与应用-陈莉君】进程的一生

热门文章

  1. 如何使用gcc编译器
  2. 很久的东西-也有价值
  3. Bailian2796 Bailian3681 数字求和【序列处理】
  4. UVA10800 Not That Kind of Graph【模拟+绘图】
  5. 51Nod-1008 N的阶乘 mod P【模除】
  6. CCF NOI1048 检测矩阵
  7. 【等价转换】—— 整数的变换
  8. Python Tricks(十二)—— 有理数的加法
  9. 【笔试/面试】—— 从大数相减到大数求除(大数求余)
  10. CentOS SELinux