详解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 相关文章推荐
JavaScript的类型、值和变量小结
Jul 09 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
Oct 15 Javascript
js实现可控制左右方向的无缝滚动效果
May 29 Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 Javascript
AngularJS路由Ui-router模块用法示例
May 29 Javascript
node实现简单的反向代理服务器
Jul 26 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
详解Vue2.0 事件派发与接收
Sep 05 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
javascript简单实现深浅拷贝过程详解
Oct 08 Javascript
Element Dropdown下拉菜单的使用方法
Jul 26 Javascript
解决vuex刷新数据消失问题
Nov 12 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
Laravel实现表单提交
2017/05/07 PHP
xml转json的js代码
2012/08/28 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
php 修改密码实现代码
2017/05/24 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
python制作小说爬虫实录
2017/08/14 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
医院党员公开承诺书
2014/08/30 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL