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的Validation插件中Remote验证的中文问题
Jul 26 Javascript
在vs2010中调试javascript代码方法
Feb 11 Javascript
javascript工具库代码
Mar 29 Javascript
兼容FF和IE的动态table示例自写
Oct 21 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
js交换排序 冒泡排序算法(Javascript版)
Oct 04 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
Oct 26 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
Dec 02 Javascript
浅析Bootstrap缩略图组件与警示框组件
Apr 29 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
Jul 05 Javascript
微信禁止下拉查看URL的处理方法
Sep 28 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常用函数小技巧
2008/09/11 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
php中使用sftp教程
2015/03/30 PHP
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
js编写选项卡效果
2017/05/23 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
ng-alain表单使用方式详解
2018/07/10 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
python如何写出表白程序
2020/06/01 Python
python实现在线翻译
2020/06/18 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
python实现双人五子棋(终端版)
2020/12/30 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
应届生船舶驾驶求职信
2013/10/19 职场文书
银行会计业务的个人自我评价
2013/11/02 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
关于保护环境的建议书
2014/05/13 职场文书
稽核岗位职责范本
2015/04/13 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
八年级物理教学反思
2016/02/19 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
详解CocosCreator项目结构机制
2021/04/14 Javascript