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 随机数产生6位数字
May 13 Javascript
javascript innerHTML使用分析
Dec 03 Javascript
JavaScript创建对象的写法
Aug 29 Javascript
使用jQuery判断IE浏览器版本的代码
Jun 14 Javascript
jQuery 动态云标签插件
Nov 11 Javascript
解析js如何获取css样式
Dec 11 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
Dec 22 Javascript
js实现本地时间同步功能
Aug 26 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
Jan 30 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
Jul 06 Javascript
layui使用templet格式化表格数据的方法
Sep 16 Javascript
js仿淘宝放大镜效果
Dec 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 SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
通过Python实现自动填写调查问卷
2017/09/06 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
营销人才自我鉴定范文
2013/12/25 职场文书
大学自我鉴定范文
2013/12/26 职场文书
银行简历自我评价
2014/02/11 职场文书
关于旅游的活动方案
2014/08/15 职场文书
幼师小班个人总结
2015/02/12 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
利用 JavaScript 构建命令行应用
2021/11/17 Javascript