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等比例缩放图片控制超出范围的图片
Aug 06 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
Jan 09 Javascript
完美实现js焦点轮播效果(一)
Mar 07 Javascript
非常实用的vue导航钩子
Mar 20 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
Sep 12 jQuery
详解Node.js中的Async和Await函数
Feb 22 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
Aug 02 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
Oct 30 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
Apr 14 Javascript
微信小程序实现多行文字滚动
Nov 18 Javascript
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 Vue.js
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中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
jQuery ztree实现动态树形多选菜单
2016/08/12 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python自定义主从分布式架构实例分析
2016/09/19 Python
python实现图书管理系统
2018/03/12 Python
python如何对实例属性进行类型检查
2018/03/20 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
Tensorflow累加的实现案例
2020/02/05 Python
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
接受捐赠答谢词
2014/01/27 职场文书
抗洪救灾标语
2014/10/08 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书