详解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 相关文章推荐
解决FireFox下[使用event很麻烦]的问题
Nov 26 Javascript
JS 实现完美include载入实现代码
Aug 05 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
Apr 05 Javascript
灵活的理解JavaScript中的this指向
Feb 25 Javascript
jQuery实现获取table表格第一列值的方法
Mar 01 Javascript
在线引用最新jquery文件的实现方法
Aug 26 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
Feb 14 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
JS监控关闭浏览器操作的实例详解
Sep 12 Javascript
Vue注册组件命名时不能用大写的原因浅析
Apr 25 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
Dec 04 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设计模式 Observer(观察者模式)
2011/06/26 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
简单了解Pandas缺失值处理方法
2019/11/16 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
岗位廉洁从业承诺书
2014/03/28 职场文书
申论倡议书范文
2014/05/13 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
保外就医申请书范文
2015/08/06 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
nginx搭建NFS网络文件系统
2022/04/14 Servers
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技