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 相关文章推荐
Node.js文件操作详解
Aug 16 Javascript
如何编写高质量JS代码
Dec 28 Javascript
JavaScript判断是否为数组的3种方法及效率比较
Apr 01 Javascript
JavaScript实现将xml转换成html table表格的方法
Apr 17 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
Aug 21 Javascript
javascript如何实现暂停功能
Nov 06 Javascript
Bootstrap布局之栅格系统详解
Jun 13 Javascript
分享Bootstrap简单表格、表单、登录页面
Aug 04 Javascript
jQuery实现的两种简单弹窗效果示例
Apr 18 jQuery
vue+layui实现select动态加载后台数据的例子
Sep 20 Javascript
JavaScript ES6 Class类实现原理详解
May 08 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
Sep 10 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
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
Python调用C语言开发的共享库方法实例
2015/03/18 Python
详解Django中的权限和组以及消息
2015/07/23 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
Django文件上传与下载(FileFlid)
2019/10/06 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
大学生个人简历中的自我评价
2013/12/27 职场文书
副厂长岗位职责
2014/02/02 职场文书
经贸韩语专业大学生职业规划
2014/02/14 职场文书
大学生就业策划书范文
2014/04/04 职场文书
学生手册评语
2014/05/05 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
校园安全广播稿范文
2014/09/25 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
投资合作意向书范本
2015/05/08 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书