// Deep Cloneobj1 = { a: 0 , b: { c: 0}};let obj3 = JSON.parse(JSON.stringify(obj1));obj1.a = 4;obj1.b.c = 4;log(JSON.stringify(obj3));// { a: 0, b: { c: 0}}

const deepClone = obj => {if (obj === null) return null; //let clone = Object.assign({}, obj); //将源对象复制到目标对象上,合并对象console.log(clone)Object.keys(clone).forEach(key =>{(clone[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key])console.log(key)});console.log(Array.isArray(obj))if(Array.isArray(obj)){clone.length = obj.length;return Array.from(clone);}return clone
}
const a = { foo: [1,2,3], obj: { a: 1, b: 2 } };
const b = deepClone(a); // a !== b, a.obj !== b.obj
console.log(a)
console.log(b)

JavaScript对象的深拷贝相关推荐

  1. javaScript对象的深拷贝和浅拷贝

    深拷贝和浅拷贝定义 浅拷贝:只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做浅拷贝(浅复制).浅拷贝只复制指向某个对象的指针(引用地址),而不复制对象本身,新旧对象还 ...

  2. JavaScript对象深拷贝

    JavaScript对象深拷贝 引言 在JavaScript中对对象拷贝复制通常是使用循环遍历的方式: var obj = {x:1,y:[1,2,3] }var obj2 = {}; for(let ...

  3. 详解JavaScript对象深拷贝

    详解JavaScript对象深拷贝 在几乎所有编程语言中,对象都以引用形式保存给变量.复制给其他变量.JavaScript语言也是如此.因此简单的进行赋值操作进行复制仅仅是对对象数据的引用地址进行一个 ...

  4. JavaScript案例:实现对象的深拷贝

    案例: var a = { name: '小明', age: 19, hobby: ['唱', '跳', 'rap', '篮球'], }; 实现对象的深拷贝 案例分析: 1.创建deepCopy的方法 ...

  5. Javascript中的深拷贝和浅拷贝

    文章目录 JavaScript中的变量类型 深拷贝和浅拷贝的理解 深拷贝和浅拷贝的实现方式 为什么需要深拷贝和浅拷贝 JavaScript中的变量类型 (1).基本类型 JavaScript中的基本类 ...

  6. vb.net中递归退到最外层_面试题被问到再也不慌,深究JavaScript中的深拷贝与浅拷贝...

    " 点个关注,养成习惯,带你python爬虫的过程中学习前端 " JavaScript中的深拷贝和浅拷贝是前端面试中频繁被问到的一道题, 于是我也自己去查阅了一些资料, 然后动手敲 ...

  7. 一文搞懂前端对象的深拷贝与浅拷贝

    在前端开发过程中常常会听到对象的深拷贝与浅拷贝,对于初学者来说,可能是傻傻的分不清楚,本人将详细介绍javascript中对象的深拷贝与浅拷贝. 一.javascript中的数据类型 基础数据类型 字 ...

  8. JavaScript数组的深拷贝

    浅拷贝是copy的地址,一改全改 丛继永 var arr1 = [1,2,3]; var arr2 = arr1; //arr1的地址会赋值给arr2,一改全改 深拷贝是copy的值,不影响原来的值 ...

  9. 如何获取HTML元素对应JavaScript对象?

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>< ...

最新文章

  1. 技术03期:自然语言处理NLP【分词篇】
  2. MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
  3. Ansj中文分词Java开发词性分类
  4. Windows控制台程序处理消息编程实例二则
  5. matlab哈明窗带阻,基于matlabFIR低通,高通,带通,带阻滤波器设计.doc
  6. 【Project3】技术总结
  7. 创建可用实验快照(二)
  8. mysql用jdbc执行回滚吗_java – mysql jdbc不成功回滚
  9. 行为驱动开发BDD和Cucunber简介
  10. vim编辑器永久显示行号
  11. 数据结构与算法课程笔记(七)
  12. OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x000001faf3e50000
  13. 北航计算机学院考研英语一还是二,2020北京航空航天大学计算机考研考试科目知多少?...
  14. 程序员996与工地施工人员谁更累?
  15. 更新三转的skills.txt
  16. 如何由普通用户权限获取root权限
  17. Windows系统查看电脑系统信息(操作系统与版本、系统型号、处理器具体型号、BIOS版本、BIOS模式、主板信息等等)
  18. 迅为stm32mp157开发板资料手册+实战教程+视频教程
  19. java本地外地号码,将JavaAnpr本地化为本地牌照
  20. J2EE:赛迪网J2EE视频总结

热门文章

  1. 2020年5月29日06--Python的函数
  2. 无锡设计培训——平面设计的专业和前景
  3. 东北林业大学计算机学院复试题,2016年东北林业大学信息与计算机工程学院程序设计基础(同等学力加试)考研复试题库...
  4. 开放下载丨2023年二十万字技术年货新鲜送达
  5. 【情绪紧张会腿抖吗?】
  6. Boolean包装类型
  7. BP神经网络(完整的理论和经验公式)
  8. 【搭建博客】个人博客搭建指南
  9. JavaScript 强制类型转换三(Boolean)
  10. 华为FreeBuds 3无线耳机观感体验——外形,舒适度,配置