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字符串操作方法实例分析
May 06 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
Aug 19 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
Dec 25 Javascript
javascript实现瀑布流加载图片原理
Feb 02 Javascript
全面了解JavaScript的数据类型转换
Jul 01 Javascript
JavaScript 字符串常用操作小结(非常实用)
Nov 30 Javascript
DOM 事件的深入浅出(二)
Dec 05 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
Mar 20 Javascript
Vue开发实现吸顶效果的示例代码
Aug 21 Javascript
微信小程序前端自定义分享的实现方法
Jun 13 Javascript
Webpack设置环境变量的一些误区详解
Dec 19 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
Feb 07 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
php中用文本文件做数据库的实现方法
2008/03/27 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
Js的MessageBox
2006/12/03 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
艺术专业大学生自我评价
2013/09/22 职场文书
货代行业个人求职简历的自我评价
2013/10/22 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
vue判断按钮是否可以点击
2022/04/09 Vue.js