我自己常用的几个JS深浅拷贝的方法
案例代码
let obj = [{name: 'robin',age: 24,num: [{sleep: '8',eat: 'chicked',happy: [1,2,3]}]} ]
深拷贝
- JSON
let newObj = JSON.parse(JSON.stringify(obj))
- jQuery的$.extend()
let o = {} let newObj = $.extend(true, o, obj)
- 函数库lodash里面的closeDeep方法
- 递归拷贝
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}
- Object.create()
浅拷贝
- Object.assign()
- 引用赋值
我自己常用的几个JS深浅拷贝的方法相关推荐
- 9012年,当我们讨论js深浅拷贝时我们在说些什么?
前言: 本文主要阅读对象:对深浅拷贝印象模糊对初级前端,想对js深浅拷贝聊一聊的中级前端.如果是对这些有完整对认知体系和解决方法的大佬,可以选择略过. 复制代码 正文: 讨论深浅拷贝,首先要从js的基 ...
- 实现JS深浅拷贝的五种方式
一.堆栈.基本数据类型.引用数据类型 在了解深浅拷贝之前,我们需得对堆栈.基本数据类型.引用数据类型有基本的了解 基本数据类型:number.string.boolean.null.undefined ...
- 【学姐面试宝典】前端基础篇Ⅴ——JS深浅拷贝、箭头函数、事件监听等
前言 博主主页
- vue js对象拷贝的方法简单易用
对象拷贝的方法是一个难点,尤其是深拷贝.建议把代码都运行下,帮助理解拷贝. 一. json方法 适合情况: JSON对象的深度克隆.方法是先JSON.stringify() 转为json字符串, 再 ...
- JS中深浅拷贝 函数封装代码
一.了解 基本数据类型保存在栈内存中,按值访问,引用数据类型保存在堆内存中,按址访问. 二.浅拷贝 浅拷贝只是复制了指向某个对象的指针,而不是复制对象本身,新旧对象其实是同一内存地址的数据,修改其中一 ...
- js中深浅拷贝理解与方法
深浅拷贝的方法 堆栈理解 基本数据类型 number.string.boolean.null.undefined 引用数据类型 object.function.array 栈内存 存储基本数据类型内容 ...
- java的深浅拷贝_Java中深浅拷贝
一,浅拷贝 ①对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象.因为是两份不同的数据,所以对其中一个对象的该成员变量值进行修改,不会影响另一个对象拷贝得 ...
- JS 中对象的深浅拷贝(ES3、ES5、ES6不同方法底层实现,一文搞清楚深浅拷贝面试常问题)
JS 中对象的深浅拷贝 拷贝我们都知道这个词的意思,我们经常做过复制.粘贴的操作,其中的复制就是拷贝,那么在拷贝的时候,如果我们复制出来的内容和原内容是完全的分开,各自不相影响,那么这就属于深拷贝 ...
- 站长常用的200个js代码
站长常用的200个js代码 1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 Onchange:当文字值改变时,产生该事件 Onselect: ...
- 常用的js数组去重的方法
常用的js数组去重的方法 1. 使用for循环去重 2.使用set对象去重 3.使用数组索引indexOf()方法搭配for循环去重 4.使用includes()方法搭配for循环去重 5.使用fif ...
最新文章
- 怎样知道一个数是不是2的N次方,怎样判断一个数是奇数还是偶数
- 洛谷 P1985 翻转棋
- 6.虚拟机类加载机制
- StringBuilder对象的常用方法 c#1614651638
- GridView控件RowDataBound事件中获取列字段的几种方法(转)
- 【NOI2015】【codevs4600】【BZOJ4195】自动程序分析,我太弱了
- [Vue-cli3] is a Vue CLI 3 only command and you are using Vue CLI 2.9.6. You may...
- 喜马拉雅 xm文件转m4a_录音转文字:学习/办公/生活都极为实用!
- Java基础篇:简单数据类型
- 数据库常用sql语句总结
- 装饰者模式的应用:react高阶组件和ES6 装饰器
- Win10系统安装SQL2008 R2详细步骤+图片+常见问题及解决方法
- 《奈何BOSS要娶我》将播 制片人:做了很多反套路的改编
- video在iPhone浏览器上播放没有声音
- 给客户一个“无法拒绝”的SaaS?——6年三个SaaS项目后的感触
- 北斗卫星重要信息汇总
- 初入坑GWAS,学习plink还是TASSEL?
- 猛将赵云java,三国武将实力排行,赵云仅排第五,而他确实是三国第一公认猛将...
- 数学中希腊字母的读法
- 天才与成功—华人教育VS老美教育