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 相关文章推荐
比Jquery的document.ready更快的方法
Apr 28 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
Sep 01 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
Apr 13 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
Aug 05 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
Sep 01 Javascript
javascript history对象详解
Feb 09 Javascript
微信小程序删除处理详解
Aug 16 Javascript
JQuery判断正整数整理小结
Aug 21 jQuery
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
Nov 06 Javascript
vue指令做滚动加载和监听等
May 26 Javascript
layer.prompt输入层的例子
Sep 24 Javascript
JS 数组和对象的深拷贝操作示例
Jun 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内置函数使用指南
2014/11/27 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
js文件中调用js的实现方法小结
2009/10/23 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
Python运用于数据分析的简单教程
2015/03/27 Python
Python实例一个类背后发生了什么
2016/02/09 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
pyenv命令管理多个Python版本
2017/03/26 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
python批量修改ssh密码的实现
2019/08/08 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
Python中Selenium库使用教程详解
2020/07/23 Python
Django静态文件加载失败解决方案
2020/08/26 Python
Django admin组件的使用
2020/10/24 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
敏捷开发的主要原则都有哪些
2015/04/26 面试题
关于运动会的广播稿50字
2014/10/17 职场文书
python单元测试之pytest的使用
2021/06/07 Python
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
vue3获取当前路由地址
2022/02/18 Vue.js