javaScript深度克隆

在做项目的时候,需要用到克隆操作。但是查找发现javaScript并没有提供克隆的方法,这对于常年开发java的我来说,是很不方便的事情。查找资料的时候,发现JQuery自带exten方法是可以进行对象复制,但是克隆出的对象引用地址还是原对象地址,这样达不到我的需求。1.脱离原对象引用地址,开辟新地址,2.深度克隆对象,向下克隆对象属性。于是参考网上自行码了一个深度克隆方法。代码如下:

//判断类型
function isClassType(Obj){var clType=Object.prototype.toString.call(Obj);//[object  Object]return clType.substring(clType.indexOf(" ")+1,clType.length-1);
}
//深度克隆
function objClone(obj){var result;if(isClassType(obj)=='Object')//对象类型result={};else if(isClassType(obj)=='Array')//Array集合类型result=[];elsereturn obj;//遍历并递归,深度克隆的关键for(x in obj){result[x]=objClone(obj[x]); }return result;
}var nl=null,         //nullundefin,         //undefinednum=1,           //numberstr="",          //stringfun=function(){},//funcationmap={a:1,b:2,c:3},//mapmap2={a:'a'},array=[map2,2,3];    //array
map.fun=fun;
map.num=num;
map.undefin=undefin;
map.nl=nl;
map.array=array;
var map1=objClone(map);
map1.a="test";
console.log(map);
console.log(map1);

控制台查看克隆对象,如下:

我更改了map1的a属性,原对象map的a属性并没有改变,满足了我的脱离原对象引用地址的需求。map1属性下面的array属性也进行原封不动的克隆过来,满足了我的深度克隆需求。目前只是进行了简单的克隆测试,如果大家发现新的bug欢迎留言。

javaScript深度克隆相关推荐

  1. javascript 深度克隆对象

    js一般有两种不同数据类型的值: 基本类型(包括undefined,Null,boolean,String,Number),按值传递: 引用类型(包括数组,对象),按址传递,引用类型在值传递的时候是内 ...

  2. Javascript 深度克隆中的循环引用问题解决和代码优化

    概要 在前端项目开发中,我们经常需要深度克隆JS对象.在克隆代码开发过程中,我们经常会遇到数组判定或对象循环引用的问题. 本文通过实例来解决上述问题 代码及实现 常见深度克隆JS对象的代码 funct ...

  3. 覆盖所有类型的javascript深度克隆

    第一种方法(只适用于基础类型) const newObj = JSON.parse(JSON.stringify(oldObj)); 第二种方法 const getType = (obj)=> ...

  4. javascript 深度克隆

    关键词 :递归 主要分为 数组 .对象.以及基本类型 function clone(Obj) {            var buf;            if (Obj instanceof A ...

  5. JavaScript复习笔记(3)——数据类型(null、undefined、NaN)与深度克隆

    JavaScript中的数据类型:Number.Boolean.String.Object.Function 但是此外还有一些容易混淆的类型如null.undefined.NaN.Array的概念 f ...

  6. JavaScript对象克隆

    前言 之前有人问我如何克隆一个JS对象,我当时没答上来:过后我查资料弄懂了这个问题,现在整理成文. 正文 JavaScript的一切实例都是对象,但他们也分为原始类型和引用类型.原始类型对象指的是字符 ...

  7. DOM节点深度克隆函数cloneNode()用法实例

    本文实例讲述了DOM节点深度克隆函数cloneNode()用法.分享给大家供大家参考. <div id= "container" > <ul> <li ...

  8. JavaScript深度学习

    毛囊炎鼻炎 JavaScript深度学习 蔡善清,[美] 斯坦利·比列斯奇,[美] 埃里克·D.,尼尔森,[美] 弗朗索瓦·肖莱 著,程泽 译 ISBN:9787115561145 包装:平装 开本: ...

  9. Jquery的深度拷贝和深度克隆

    有人问,拷贝和克隆不都是"复制"的意思吗. 这位看官问的好,一般情况下是一样的,但在jquery中却有些不同.jqurey深度拷贝一般只js对象的复制,是$.extend()方法, ...

  10. jquery,angular 对象数组的克隆和深度克隆

    var obj1 = $.extend(false, {}, obj2);  //对象克隆 var obj1 = $.extend(true, {}, obj2);   //对象深度克隆 ------ ...

最新文章

  1. 福利 | Python、深度学习、机器学习、TensorFlow 好书推荐
  2. boost::type_erasure::ostreamable相关的测试程序
  3. JavaScript单线程和浏览器事件循环简述
  4. 从np.random.normal()到正态分布的拟合
  5. 荒野行动android模拟,荒野行动用模拟器玩教程 荒野行动模拟器不支持机型解决方法...
  6. 如何关闭极域课堂(亲测有效)(含下载链接)
  7. 笔记本电脑连接WIFI速度很慢-解决办法 亲测有效【5MB/S直达10MB/S】
  8. win10系统解决Svn图标不显示的问题
  9. 当当网上书店购物车——源码
  10. 文件服务器资源管理器无法在加载wmI对象,无法通过WMI
  11. 计算机设备图标怎么删除,电脑设备和驱动器中没用的图标怎么删除
  12. 如何使用PDF转换器将PDF转换成图片
  13. 软件系统开发步骤包括哪些过程?
  14. 太极拳什么时间练习最适宜
  15. 校园兼职平台项目总结
  16. 盘点互联网大厂的元宇宙布局
  17. [SSD核心技术:FTL 13] 不求同生,但求同死?固态硬盘闪存磨损均衡技术详解
  18. 测线仪正确使用方法图解1
  19. 敏捷之路:如何开好迭代评审会
  20. 【科研技巧】Mac下使用SciDavis绘制科研论文图教程(安装及使用)

热门文章

  1. Segmentation笔记4-Boundary-Aware Network for Fast and High-Accuracy Portrait Segmentation
  2. threejs 三次贝塞尔曲线
  3. Linux TCP Timestamps 没鸟用
  4. 数字图像处理与Python实现笔记之图像压缩
  5. 网页视频下载方法二:手机浏览器下载
  6. Android绘制几何图形详解
  7. 背单词App开发日记1
  8. JavaEE | 多线程基础
  9. 实现注册功能添加邮箱激活验证
  10. 【华为机试真题 JAVA】统计射击比赛成绩-100