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 屏蔽鼠标右键脚本附破解方法
Dec 03 Javascript
javascript的数据类型、字面量、变量介绍
May 23 Javascript
js 实现 input type="file" 文件上传示例代码
Aug 07 Javascript
JQuery each()嵌套使用小结
Apr 18 Javascript
node.js中的http.response.removeHeader方法使用说明
Dec 14 Javascript
js实现显示当前状态的导航效果代码
Aug 28 Javascript
轻松实现jquery手风琴效果
Jan 14 Javascript
JS控制TreeView的结点选择
Nov 11 Javascript
node.js调用Chrome浏览器打开链接地址的方法
May 17 Javascript
React Router v4 入坑指南(小结)
Apr 08 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
Jun 04 Javascript
Emberjs 通过 axios 下载文件的方法
Sep 03 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
PHP中list方法用法示例
2016/12/01 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
2018/04/14 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
用Python编写简单的定时器的方法
2015/05/02 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
python实现连续图文识别
2018/12/18 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
演讲稿怎么写
2014/01/07 职场文书
文秘应聘自荐书范文
2014/02/18 职场文书
端午节活动策划方案
2014/03/09 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
2014年护士长工作总结
2014/11/11 职场文书
建国大业观后感
2015/06/01 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android