JavaScript基于遍历操作实现对象深拷贝功能示例


Posted in Javascript onMarch 05, 2019

本文实例讲述了JavaScript基于遍历操作实现对象深拷贝功能。分享给大家供大家参考,具体如下:

function getType(o){
  var _t;
  return ((_t = typeof(o)) == "object" ? o==null && "null" || Object.prototype.toString.call(o).slice(8,-1):_t).toLowerCase();
}
function extend(destination,source){
  for(var p in source){
    if(getType(source[p])=="array"||getType(source[p])=="object"){
      destination[p]=getType(source[p])=="array"?[]:{};
      arguments.callee(destination[p],source[p]);
    }else{
      destination[p]=source[p];
    }
  }
}
var test={
  a:"ss",
  b:"dd",
  c:[
    {d:"css",e:"cdd"},
    {
      m:"ff",
      n:[
        {kk:"11",jj:"22"},
        {ll:"44"}
      ]
    }
  ]
};
var test1={};
extend(test1,test);
console.log(test);
console.log(test1);
test1.c[1].n[0].kk="change"; //改变test1的c属性对象的d属性
console.log(test);
console.log(test1);
console.log(test.c[1].n[0]);
console.log(test1.c[1].n[0]);

测试结果

JavaScript基于遍历操作实现对象深拷贝功能示例

从测试结果可以看到,通过使用这个遍历的方法,成功将对象test深拷贝复制一份,得到test1。并且更改test1对象的属性,并不会对test对象产生影响。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Javascript 阻止javascript事件冒泡,获取控件ID值
Jun 27 Javascript
javascript 鼠标拖动图标技术
Feb 07 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
Dec 24 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
Jan 25 Javascript
javascript 判断两个日期之差的示例代码
Sep 05 Javascript
jQuery实现分隔条左右拖动功能
Nov 21 Javascript
vue 实现的树形菜的实例代码
Mar 19 Javascript
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
vue实现简单的日历效果
Sep 24 Javascript
node后端服务保活的实现
Nov 10 Javascript
原生JS实现拖拽功能
Dec 16 Javascript
JavaScript函数定义方法实例详解
Mar 05 #Javascript
C#程序员入门学习微信小程序的笔记
Mar 05 #Javascript
JavaScript函数的4种调用方法实例分析
Mar 05 #Javascript
微信小程序保存多张图片的实现方法
Mar 05 #Javascript
JS添加或删除HTML dom元素的方法实例分析
Mar 05 #Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
Mar 05 #Javascript
es6数据变更同步到视图层的方法
Mar 04 #Javascript
You might like
如何对PHP程序中的常见漏洞进行攻击
2006/10/09 PHP
Smarty模板快速入门
2007/01/04 PHP
php面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
PHP CodeBase:将时间显示为"刚刚""n分钟/小时前"的方法详解
2013/06/06 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
简单实现python画圆功能
2018/01/25 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
python实现mean-shift聚类算法
2020/06/10 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
学校门卫工作职责
2013/12/07 职场文书
创业计划书如何吸引他人眼球
2014/01/10 职场文书
社区禁毒工作方案
2014/06/02 职场文书
征兵宣传标语
2014/06/20 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
idea下配置tomcat避坑详解
2022/04/12 Servers