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 相关文章推荐
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
Jan 15 Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 Javascript
Jquery的hover方法让鼠标经过li时背景变色
Sep 06 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
Nov 29 Javascript
js实现匹配时换色的输入提示特效代码
Aug 17 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
Jun 12 Javascript
jQuery插件imgAreaSelect基础讲解
May 26 jQuery
小程序云开发实战小结
Oct 25 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
Vue如何使用混合Mixins和插件开发详解
Feb 05 Javascript
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
Apr 13 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中创建和调用webservice接口示例
2014/07/25 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
js 获取服务器控件值的代码
2010/03/05 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
angularJS 入门基础
2015/02/09 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
Python之字典添加元素的几种方法
2020/09/30 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
品学兼优的大学生自我评价
2013/09/20 职场文书
快餐店的创业计划书范文
2014/01/29 职场文书
公司管理建议书范文
2014/03/12 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
建筑工地大门标语
2014/06/18 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
大雁塔导游词
2015/02/04 职场文书