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 相关文章推荐
showModelessDialog()使用详解
Sep 07 Javascript
JavaScript 基础问答三
Dec 03 Javascript
javascript复制对象使用说明
Jun 28 Javascript
JavaScript用Number方法实现string转int
May 13 Javascript
jquery和js实现对div的隐藏和显示方法
Sep 26 Javascript
用Move.js配合创建CSS3动画的入门指引
Jul 22 Javascript
浅谈javascript中执行环境(作用域)与作用域链
Dec 08 Javascript
js实现点击按钮弹出上传文件的窗口
Dec 23 Javascript
Angular.js中下拉框实现渲染html的方法
Jun 18 Javascript
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
js使用highlight.js高亮你的代码
Aug 18 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
Jun 19 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
CodeIgniter框架URL路由总结
2014/09/03 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
python中正则的使用指南
2016/12/04 Python
django定期执行任务(实例讲解)
2017/11/03 Python
Python chardet库识别编码原理解析
2020/02/18 Python
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
护理专科毕业推荐信
2013/11/10 职场文书
追悼会子女答谢词
2014/01/28 职场文书
老同学聚会感言
2014/02/23 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
六一节目主持词
2014/04/01 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
大四学生个人总结
2015/02/15 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
参加招聘会后的感想
2015/08/10 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
详解Django的MVT设计模式
2021/04/29 Python
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS