案例代码

let obj = [{name: 'robin',age: 24,num: [{sleep: '8',eat: 'chicked',happy: [1,2,3]}]}
]

深拷贝

  1. JSON
let newObj = JSON.parse(JSON.stringify(obj))
  1. jQuery的$.extend()
let o = {}
let newObj = $.extend(true, o, obj)
  1. 函数库lodash里面的closeDeep方法
  2. 递归拷贝
        function deepClone (sourceObj, targetObj) {let cloneObj = targetObj || {}if(!sourceObj || typeof sourceObj !== "object" || sourceObj.length === undefined){return sourceObj}if(sourceObj instanceof Array){cloneObj = sourceObj.concat() // concat 不会改变原有数组,会返回原有数组的一个副本} else {for(let i in sourceObj){if (typeof sourceObj[i] === 'object') {cloneObj[i] = deepClone(sourceObj[i], {})} else {cloneObj[i] = sourceObj[i]}}}return cloneObj}
  1. Object.create()

浅拷贝

  1. Object.assign()
  2. 引用赋值

我自己常用的几个JS深浅拷贝的方法相关推荐

  1. 9012年,当我们讨论js深浅拷贝时我们在说些什么?

    前言: 本文主要阅读对象:对深浅拷贝印象模糊对初级前端,想对js深浅拷贝聊一聊的中级前端.如果是对这些有完整对认知体系和解决方法的大佬,可以选择略过. 复制代码 正文: 讨论深浅拷贝,首先要从js的基 ...

  2. 实现JS深浅拷贝的五种方式

    一.堆栈.基本数据类型.引用数据类型 在了解深浅拷贝之前,我们需得对堆栈.基本数据类型.引用数据类型有基本的了解 基本数据类型:number.string.boolean.null.undefined ...

  3. 【学姐面试宝典】前端基础篇Ⅴ——JS深浅拷贝、箭头函数、事件监听等

    前言 博主主页

  4. vue js对象拷贝的方法简单易用

    对象拷贝的方法是一个难点,尤其是深拷贝.建议把代码都运行下,帮助理解拷贝. 一. json方法 适合情况:  JSON对象的深度克隆.方法是先JSON.stringify() 转为json字符串, 再 ...

  5. JS中深浅拷贝 函数封装代码

    一.了解 基本数据类型保存在栈内存中,按值访问,引用数据类型保存在堆内存中,按址访问. 二.浅拷贝 浅拷贝只是复制了指向某个对象的指针,而不是复制对象本身,新旧对象其实是同一内存地址的数据,修改其中一 ...

  6. js中深浅拷贝理解与方法

    深浅拷贝的方法 堆栈理解 基本数据类型 number.string.boolean.null.undefined 引用数据类型 object.function.array 栈内存 存储基本数据类型内容 ...

  7. java的深浅拷贝_Java中深浅拷贝

    一,浅拷贝 ①对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象.因为是两份不同的数据,所以对其中一个对象的该成员变量值进行修改,不会影响另一个对象拷贝得 ...

  8. JS 中对象的深浅拷贝(ES3、ES5、ES6不同方法底层实现,一文搞清楚深浅拷贝面试常问题)

    JS 中对象的深浅拷贝   拷贝我们都知道这个词的意思,我们经常做过复制.粘贴的操作,其中的复制就是拷贝,那么在拷贝的时候,如果我们复制出来的内容和原内容是完全的分开,各自不相影响,那么这就属于深拷贝 ...

  9. 站长常用的200个js代码

    站长常用的200个js代码 1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 Onchange:当文字值改变时,产生该事件 Onselect: ...

  10. 常用的js数组去重的方法

    常用的js数组去重的方法 1. 使用for循环去重 2.使用set对象去重 3.使用数组索引indexOf()方法搭配for循环去重 4.使用includes()方法搭配for循环去重 5.使用fif ...

最新文章

  1. 怎样知道一个数是不是2的N次方,怎样判断一个数是奇数还是偶数
  2. 洛谷 P1985 翻转棋
  3. 6.虚拟机类加载机制
  4. StringBuilder对象的常用方法 c#1614651638
  5. GridView控件RowDataBound事件中获取列字段的几种方法(转)
  6. 【NOI2015】【codevs4600】【BZOJ4195】自动程序分析,我太弱了
  7. [Vue-cli3] is a Vue CLI 3 only command and you are using Vue CLI 2.9.6. You may...
  8. 喜马拉雅 xm文件转m4a_录音转文字:学习/办公/生活都极为实用!
  9. Java基础篇:简单数据类型
  10. 数据库常用sql语句总结
  11. 装饰者模式的应用:react高阶组件和ES6 装饰器
  12. Win10系统安装SQL2008 R2详细步骤+图片+常见问题及解决方法
  13. 《奈何BOSS要娶我》将播 制片人:做了很多反套路的改编
  14. video在iPhone浏览器上播放没有声音
  15. 给客户一个“无法拒绝”的SaaS?——6年三个SaaS项目后的感触
  16. 北斗卫星重要信息汇总
  17. 初入坑GWAS,学习plink还是TASSEL?
  18. 猛将赵云java,三国武将实力排行,赵云仅排第五,而他确实是三国第一公认猛将...
  19. 数学中希腊字母的读法
  20. 天才与成功—华人教育VS老美教育

热门文章

  1. bug:Bus error的解决方法(zz)
  2. ptp输出内容包含什么_04-PTP命令
  3. Windows下的SysWow64和System32
  4. 光分配网(ODN)一级分光和二级分光的区别及应用场景
  5. 华为服务器插键盘的位置,服务器如何调出软键盘
  6. 模拟文曲星上的猜数游戏c语言,文曲星上的“猜数字”游戏Python版
  7. 电影《龙卷风》主题旋律你一定听过
  8. win10如何删除万能输入法
  9. js调用网页打印接口
  10. 面试热问——你的职业规划是什么?