详解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 .attr()和.removeAttr()方法操作元素属性示例
Jul 16 Javascript
JS实现遮罩层效果的简单实例
Nov 12 Javascript
js数组中如何随机取出一个值
Jun 13 Javascript
在JavaScript中判断整型的N种方法示例介绍
Jun 18 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
Angular4实现图片上传预览路径不安全的问题解决
Dec 25 Javascript
D3.js实现简洁实用的动态仪表盘的示例
Apr 04 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
Apr 18 Javascript
实例讲解JS中pop使用方法
Jan 27 Javascript
详解vue 自定义marquee无缝滚动组件
Apr 09 Javascript
Vuex实现数据增加和删除功能
Nov 11 Javascript
jquery实现有过渡效果的tab切换
Jul 17 jQuery
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
网站当前的在线人数
2006/10/09 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
PHP简单遍历对象示例
2016/09/28 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
python编程羊车门问题代码示例
2017/10/25 Python
python清除字符串中间空格的实例讲解
2018/05/11 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
python实现文件的分割与合并
2019/08/29 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
Java面试笔试题大全
2016/11/23 面试题
财务会计毕业生个人求职信
2014/02/03 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
继承权公证书范本
2015/01/23 职场文书
运动会宣传稿50字
2015/07/23 职场文书
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android