详解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 相关文章推荐
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
Mar 01 Javascript
Javascript获取HTML静态页面参数传递值示例
Aug 18 Javascript
json数据与字符串的相互转化示例
Sep 18 Javascript
node.js中的Socket.IO使用实例
Nov 04 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
Jul 29 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
Sep 16 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
Aug 20 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
Oct 20 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
详解Vue方法与事件
Mar 09 Javascript
jQuery阻止移动端遮罩层后页面滚动
Mar 15 Javascript
记一次vue去除#问题处理经过小结
Jan 24 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
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
jquery 学习笔记一
2010/04/07 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
window.onload使用指南
2015/09/13 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
python字典get()方法用法分析
2015/04/17 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
python如何安装下载后的模块
2020/07/03 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
行政管理人员精品工作推荐信
2013/11/04 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
长征观后感
2015/06/09 职场文书
2015小学师德工作总结
2015/07/21 职场文书
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers
java实现web实时消息推送的七种方案
2022/07/23 Java/Android