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 相关文章推荐
ExtJs的Date格式字符代码
Dec 30 Javascript
JavaScript 5 新增 Array 方法实现介绍
Feb 06 Javascript
Javascript核心读书有感之词法结构
Feb 01 Javascript
jquery 构造函数在表单提交过程中修改数据
May 25 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
Feb 25 Javascript
总结Javascript中数组各种去重的方法
Oct 04 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
Dec 24 Javascript
浅谈Angular2 模块懒加载的方法
Oct 04 Javascript
浅谈vuejs实现数据驱动视图原理
Feb 23 Javascript
了解ESlint和其相关操作小结
May 21 Javascript
React冒泡和阻止冒泡的应用详解
Aug 18 Javascript
微信小程序实现点击页面出现文字
Sep 21 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设计模式 Command(命令模式)
2011/06/26 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
JS 控制非法字符的输入代码
2009/12/04 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
纯javascript版日历控件
2016/11/24 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
JS一个简单的注册页面实例
2017/09/05 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
Vue配置marked链接添加target="_blank"的方法
2019/07/19 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
Vue性能优化的方法
2020/07/30 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
python中比较两个列表的实例方法
2019/07/04 Python
python pandas 时间日期的处理实现
2019/07/30 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
自考生自我评价分享
2014/01/18 职场文书
主管竞聘书范文
2014/03/31 职场文书
大型活动组织方案
2014/05/10 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers