详解JS数据类型的值拷贝函数(深拷贝)


Posted in Javascript onJuly 13, 2017

废话不多说了,直接给大家贴代码了,具体代码如下所示:

function mottoClone (obj) {
 if (obj === null || typeof obj !== 'object') return obj;
 if (obj instanceof Boolean) return new Boolean(obj.valueOf());
 if (obj instanceof Number) return new Number(obj.valueOf());
 if (obj instanceof String) return new String(obj.valueOf());
 if (obj instanceof RegExp) return new RegExp(obj.valueOf());
 if (obj instanceof Date) return new Date(obj.valueOf());
 var cpObj = obj instanceof Array ? [] : {};
 for (var key in obj) cpObj[key] = myClone(obj[key]);
 return cpObj;
}

支持的数据类型或格式有:Boolean,Number,String,RegExp,Date,Function,Array,JSON

支持深拷贝(循环迭代),如:

var obj = {
 id: 1,
 name: 'xxx',
 sayName: function () {
  console.log('my name is' + this.name);
 },
 childs: [
  {}, 
  {}, 
  ...
 ],
 opts: {
  xxx: [],
  ...
 },
 ...
};
var newObj = mottoClone(obj);

以上所述是小编给大家介绍的JS数据类型的值拷贝函数(深拷贝),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
不一样的文字闪烁 轮番闪烁
Nov 11 Javascript
jQuery 源码分析笔记(5) jQuery.support
Jun 19 Javascript
JavaScript从0开始构思表情插件
Jul 26 Javascript
jQuery组件easyui对话框实现代码
Aug 25 Javascript
原生js仿jquery实现对Ajax的封装
Oct 04 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
Jan 06 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
Feb 23 Javascript
swiper插件自定义切换箭头按钮
Dec 28 Javascript
JavaScript实现与使用发布/订阅模式详解
Jan 19 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 Javascript
jQuery实现小火箭返回顶部特效
Feb 03 jQuery
three.js 实现露珠滴落动画效果的示例代码
Mar 01 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
Mar 27 #Javascript
js学习总结_选项卡封装(实例讲解)
Jul 13 #Javascript
用户管理的设计_jquery的ajax实现二级联动效果
Jul 13 #jQuery
通过命令行生成vue项目框架的方法
Jul 12 #Javascript
微信小程序实现点击返回顶层的方法
Jul 12 #Javascript
使用AngularJS对表单提交内容进行验证的操作方法
Jul 12 #Javascript
JQuery EasyUI的一些常用组件
Jul 12 #jQuery
You might like
MYSQL数据库初学者使用指南
2006/11/16 PHP
一个MYSQL操作类
2006/11/16 PHP
URL Rewrite的设置方法
2007/01/02 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
Laravel下生成验证码的类
2017/11/15 PHP
监控 url fragment变化的js代码
2010/04/19 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
使用python实现strcmp函数功能示例
2014/03/25 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
python实现邮件自动发送
2019/08/10 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
python实现飞行棋游戏
2020/02/05 Python
Python3列表List入门知识附实例
2020/02/09 Python
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
Java面试题:为什么要用Java
2012/05/11 面试题
预备党员转正材料
2014/12/19 职场文书
同学聚会开幕词
2019/04/02 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
Python办公自动化解决world文件批量转换
2021/09/15 Python