javaScript深克隆(deepClone(origin,target))
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))相关推荐
- JavaScript中的Event.target
event.target 一般情况下我们获取目标事件源都是谁是调用者谁就是事件源,但是当有批量的DOM需要操作的时候,要判断哪一个dom是事件源就不是很明确了,使用e.target可以准确地获取事件源 ...
- Javascript深克隆和浅克隆
深克隆和浅克隆 浅克隆:只需要拷贝对象中的原始类型值,引用类型拷贝的仍然是地址 深克隆:无论是原始类型还是引用类型都会进行拷贝,包括引用类型中还有其他引用类型的质. <script>let ...
- 浅克隆(ShallowClone)和深克隆(DeepClone)区别以及实现
什么是克隆 克隆就是依据已经有的数据,创造一份新的完全一样的数据拷贝. 浅克隆和深克隆区别 浅克隆: 被Clone的对象的所有变量都含有原来对象相同的值,而引用变量还是原来对用的引用[拷贝对象时仅仅拷 ...
- 原生JS如何实现包含各种类型数据的深克隆
引言 在各个社区查找使用原生js实现深克隆的方法,众说纷纭,大多数实现效果并不理想,在此将各家之言总结一下,得出一个完美的解决方案. 本文参考以下文章,感兴趣者请移步到原文链接. JS类型判断.对象克 ...
- JavaScript note
1.浏览器 IE--trident Chrome--webkit / blink Firefox--gecko Opera--presto Safari--webkit 2.数据类型 a. 原始值: ...
- 登峰造极的Javascript
文章目录 switch case 条件判断语句 数组 对象 typeof操作符 显式类型转换 隐式类型转换 函数 参数 作用域 作用域链 闭包 立即执行函数 对象,包装类 包装类 原型.原型链 原型链 ...
- JavaScript yyds
JavaScript yyds JavaScript历史 主流浏览器及其内核 JavaScript中的数据类型 typeof函数 特殊情况 显示类型转换 隐式类型转换 函数 命名函数声明 匿名函数表达 ...
- JS类型判断、对象克隆、数组克隆
类型判断 我们先说一下JS的数据类型,我们一般说JS有六大数据类型(ES6以前)分别是: 基本数据类型 Number String Boolean null undefined 引用数据类型 obje ...
- Mr.J--JS学习(Clone)
克隆 一.对象的克隆 Javascript中的数据类型分为两大类:原始类型和对象类型. (1)原始类型包括:数值.字符串.布尔值.null.undefined. (2)对象类型包括:对象即是属性的集合 ...
- 2.ECMAScript
1.发展史.ECMA.编程语言.JS相关.变量.JS值 1.1 五大主流浏览器内核 IE: trident Chrome: webkit blink safari: webkit firefox: g ...
最新文章
- BGP local-preference MED属性实验
- 网页热点区域神器工具大曝光
- 验证url 地址是否是图片
- 计算机输入法如何显示在桌面快捷方式,电脑输入法怎么设置快捷键
- Win7环境下mysql报错1045:Access denied for user root@localhost错误解决方法
- 云时代架构--阅读笔记03
- linux沙箱隔离_Linux沙箱技术介绍
- 具有CompletableFuture的异步超时
- innerHTML、innerText和outerHTML、outerText的区别
- 很有用很有效的操作之批量操作一组图片
- 项目: NFS服务的搭建
- .sh文件是什么语言_关于Linux文件的一些基本命令和知识:
- 【Unity入门】场景、游戏物体和组件的概念
- java 中文乱码过滤器_JAVA中文乱码过滤器(用java过滤器解决中文乱码)V0422 整理版...
- 事务的四大特性(ACID)
- 直播预告:Envoy Core Maintainer 跨洋解读 Envoy 技术(中文)
- 道可道,非常道;名可名,非常名
- 如何在微信公众号正文中添加附件?
- Tui-editor富文本编辑器的使用
- android 子页面如何调用父页面函数,Android 调用父类方法,进行子界面刷新
热门文章
- (转)某公司ICO涉嫌“擅自发行股票罪” 判处有期徒刑一年六个月
- (转)知乎:一文读懂比特币私钥、公钥、钱包地址的来历和关系
- 代码覆盖率:80%,不能少(转)
- 我在阿里云做产品:如何打出一个爆款云服务器? | 凌云时刻
- java httpclient 进度条_java – 如何使用Apache HttpClient 4获取文件上传的进度条?
- 【数据预测】基于matlab双向长短时记忆BiLSTM(多输入单输出)数据预测【含Matlab源码 1826期】
- 【优化预测】基于matlab粒子群算法优化BP神经网络预测【含Matlab源码 F003期】
- java调试程序(eclipse)
- python soup提取叶子标签_使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)...
- 武汉理工大学计算机学院夏令营,武汉理工大学计算机科学与技术学院(专业学位)软件工程保研夏令营...