var obj = {name: 'Tom',age: 12,card: ['a', ' b', 'c'],wife: {name: 'amy',son: {name: 'Jimmiy '}}}//遍历对象  for(var prop in obj ) // 1.判断是不是原始值//  type() object// 2.判断是数组还是对象// toString() <-推荐使用// instanceof // constructor// 后两种父子域(跨域)的时候会有问题 -> [] instanceof Array   falses// 3.建立相应的数组和对象// 递归function deepClone(origin, target) {var target = target || {},toString = Object.prototype.toString,arrType = "[object Array]";for (var prop in origin) {if (origin.hasOwnProperty(prop)) {//<-避免拿到原型链上的属性if (origin[prop] !== "null" && typeof (origin[prop]) == 'object') {// if (toString.call(origin[prop]) == arrType) {//     target[prop] = [];// } else {//     target[prop] = {};// }// 优化target[prop] = toString.call(origin[prop]) == arrType ? [] : {};deepClone(origin[prop], target[prop]);} else {target[prop] = origin[prop];//<-原始值直接赋值进行深克隆}}}return target;}

跟着渡一的姬成老师的javaScript课程敲的,教学视频在腾讯课堂有~

javaScript深克隆(deepClone(origin,target))相关推荐

  1. JavaScript中的Event.target

    event.target 一般情况下我们获取目标事件源都是谁是调用者谁就是事件源,但是当有批量的DOM需要操作的时候,要判断哪一个dom是事件源就不是很明确了,使用e.target可以准确地获取事件源 ...

  2. Javascript深克隆和浅克隆

    深克隆和浅克隆 浅克隆:只需要拷贝对象中的原始类型值,引用类型拷贝的仍然是地址 深克隆:无论是原始类型还是引用类型都会进行拷贝,包括引用类型中还有其他引用类型的质. <script>let ...

  3. 浅克隆(ShallowClone)和深克隆(DeepClone)区别以及实现

    什么是克隆 克隆就是依据已经有的数据,创造一份新的完全一样的数据拷贝. 浅克隆和深克隆区别 浅克隆: 被Clone的对象的所有变量都含有原来对象相同的值,而引用变量还是原来对用的引用[拷贝对象时仅仅拷 ...

  4. 原生JS如何实现包含各种类型数据的深克隆

    引言 在各个社区查找使用原生js实现深克隆的方法,众说纷纭,大多数实现效果并不理想,在此将各家之言总结一下,得出一个完美的解决方案. 本文参考以下文章,感兴趣者请移步到原文链接. JS类型判断.对象克 ...

  5. JavaScript note

    1.浏览器 IE--trident Chrome--webkit / blink Firefox--gecko Opera--presto Safari--webkit 2.数据类型 a. 原始值: ...

  6. 登峰造极的Javascript

    文章目录 switch case 条件判断语句 数组 对象 typeof操作符 显式类型转换 隐式类型转换 函数 参数 作用域 作用域链 闭包 立即执行函数 对象,包装类 包装类 原型.原型链 原型链 ...

  7. JavaScript yyds

    JavaScript yyds JavaScript历史 主流浏览器及其内核 JavaScript中的数据类型 typeof函数 特殊情况 显示类型转换 隐式类型转换 函数 命名函数声明 匿名函数表达 ...

  8. JS类型判断、对象克隆、数组克隆

    类型判断 我们先说一下JS的数据类型,我们一般说JS有六大数据类型(ES6以前)分别是: 基本数据类型 Number String Boolean null undefined 引用数据类型 obje ...

  9. Mr.J--JS学习(Clone)

    克隆 一.对象的克隆 Javascript中的数据类型分为两大类:原始类型和对象类型. (1)原始类型包括:数值.字符串.布尔值.null.undefined. (2)对象类型包括:对象即是属性的集合 ...

  10. 2.ECMAScript

    1.发展史.ECMA.编程语言.JS相关.变量.JS值 1.1 五大主流浏览器内核 IE: trident Chrome: webkit blink safari: webkit firefox: g ...

最新文章

  1. BGP local-preference MED属性实验
  2. 网页热点区域神器工具大曝光
  3. 验证url 地址是否是图片
  4. 计算机输入法如何显示在桌面快捷方式,电脑输入法怎么设置快捷键
  5. Win7环境下mysql报错1045:Access denied for user root@localhost错误解决方法
  6. 云时代架构--阅读笔记03
  7. linux沙箱隔离_Linux沙箱技术介绍
  8. 具有CompletableFuture的异步超时
  9. innerHTML、innerText和outerHTML、outerText的区别
  10. 很有用很有效的操作之批量操作一组图片
  11. 项目: NFS服务的搭建
  12. .sh文件是什么语言_关于Linux文件的一些基本命令和知识:
  13. 【Unity入门】场景、游戏物体和组件的概念
  14. java 中文乱码过滤器_JAVA中文乱码过滤器(用java过滤器解决中文乱码)V0422 整理版...
  15. 事务的四大特性(ACID)
  16. 直播预告:Envoy Core Maintainer 跨洋解读 Envoy 技术(中文)
  17. 道可道,非常道;名可名,非常名
  18. 如何在微信公众号正文中添加附件?
  19. Tui-editor富文本编辑器的使用
  20. android 子页面如何调用父页面函数,Android 调用父类方法,进行子界面刷新

热门文章

  1. (转)某公司ICO涉嫌“擅自发行股票罪” 判处有期徒刑一年六个月
  2. (转)知乎:一文读懂比特币私钥、公钥、钱包地址的来历和关系
  3. 代码覆盖率:80%,不能少(转)
  4. 我在阿里云做产品:如何打出一个爆款云服务器? | 凌云时刻
  5. java httpclient 进度条_java – 如何使用Apache HttpClient 4获取文件上传的进度条?
  6. 【数据预测】基于matlab双向长短时记忆BiLSTM(多输入单输出)数据预测【含Matlab源码 1826期】
  7. 【优化预测】基于matlab粒子群算法优化BP神经网络预测【含Matlab源码 F003期】
  8. java调试程序(eclipse)
  9. python soup提取叶子标签_使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)...
  10. 武汉理工大学计算机学院夏令营,武汉理工大学计算机科学与技术学院(专业学位)软件工程保研夏令营...