详解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.AutoComplete.js中文修正版(支持firefox)
Apr 09 Javascript
javascript重复绑定事件造成的后果说明
Mar 02 Javascript
javascript修改IMG标签的src问题
Mar 28 Javascript
jQuery固定元素插件scrolltofixed使用指南
Apr 21 Javascript
js网页滚动条滚动事件实例分析
May 05 Javascript
jquery实现手机号码选号的方法
Jul 31 Javascript
js实现对ajax请求面向对象的封装
Jan 08 Javascript
Bootstrap精简教程中秋大放送
Sep 15 Javascript
JavaScript实现垂直向上无缝滚动特效代码
Nov 23 Javascript
vue router学习之动态路由和嵌套路由详解
Sep 21 Javascript
详解Vue-axios 设置请求头问题
Dec 06 Javascript
JavaScript函数定义方法实例详解
Mar 05 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/10/09 PHP
PHP面向对象编程快速入门
2006/12/14 PHP
给php新手谈谈我的学习心得
2007/02/25 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
Python基于twisted实现简单的web服务器
2014/09/29 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
python实现用户登录系统
2016/05/21 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
Python使用Matlab命令过程解析
2020/06/04 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
澳大利亚家具商店:Freedom
2020/12/17 全球购物
性能测试工程师的面试题
2015/02/20 面试题
支教自我鉴定
2014/01/18 职场文书
安全资金保障制度
2014/01/23 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
springboot用户数据修改的详细实现
2022/04/06 Java/Android
python高温预警数据获取实例
2022/07/23 Python