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 相关文章推荐
【消息提示组件】,兼容IE6/7&&FF2
Sep 04 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
Mar 04 Javascript
动态加载script文件的两种方法
Aug 15 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
jQuery中size()方法用法实例
Dec 27 Javascript
js css+html实现简单的日历
Jul 14 Javascript
微信小程序 网络API Websocket详解
Nov 09 Javascript
node+express+ejs使用模版引擎做的一个示例demo
Sep 18 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
Aug 12 Javascript
angular使用md5,CryptoJS des加密的方法
Jun 03 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
nginx配置域名后的二级目录访问不同项目的配置操作
Nov 06 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
2006/12/14 PHP
PHP与SQL注入攻击[三]
2007/04/17 PHP
php生成随机数或者字符串的代码
2008/09/05 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
小程序实现投票进度条
2019/11/20 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python正则表达式匹配中文用法示例
2017/01/17 Python
python爬取淘宝商品销量信息
2018/11/16 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
耐克亚太地区:Nike APAC
2019/12/07 全球购物
初入社会应届生求职信
2013/11/18 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
中层竞聘演讲稿
2014/01/09 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
董事长秘书工作职责
2014/06/10 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
查摆剖析材料范文
2014/09/30 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
幼儿园见习报告
2014/10/30 职场文书
超市督导岗位职责
2015/04/10 职场文书