详解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 相关文章推荐
textContent在Firefox下与innerText等效的属性
May 12 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
Aug 13 Javascript
无刷新预览所选择的图片示例代码
Apr 02 Javascript
PHP开发者必须掌握的6个关键字
Apr 14 Javascript
AngularJS入门教程(二):AngularJS模板
Dec 06 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
深入学习jQuery中的data()
Dec 22 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
May 09 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
May 26 jQuery
nuxt+axios实现打包后动态修改请求地址的方法
Apr 22 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
Jul 20 Javascript
微信小程序自定义胶囊样式
Dec 27 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和ACCESS写聊天室(一)
2006/10/09 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
php下Memcached入门实例解析
2015/01/05 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
Vue组件的使用教程详解
2018/01/05 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
python ElementTree 基本读操作示例
2009/04/09 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
在python里从协程返回一个值的示例
2019/02/19 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
软件测试工程师笔试题带答案
2015/03/27 面试题
初中化学教学反思
2014/01/23 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
求职信结尾怎么写
2014/05/26 职场文书
甜品店创业计划书
2014/08/14 职场文书