详解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 相关文章推荐
一个选择最快的服务器转向代码
Apr 27 Javascript
javascript中全局对象的parseInt()方法使用介绍
Dec 19 Javascript
js函数模拟显示桌面.scf程序示例
Apr 20 Javascript
jQuery $命名冲突解决方案汇总
Nov 13 Javascript
node.js中的fs.rmdir方法使用说明
Dec 16 Javascript
扒一扒JavaScript 预解释
Jan 28 Javascript
jquery中EasyUI实现同步树
Mar 01 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
Dec 03 Javascript
JavaScript学习笔记整理_setTimeout的应用
Sep 19 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
Nov 24 Javascript
ReactNative踩坑之配置调试端口的解决方法
Jul 28 Javascript
node puppeteer(headless chrome)实现网站登录
May 09 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+mysql 实现身份验证代码
2010/03/24 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
Javascript的比较汇总
2016/07/25 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
Python列表对象实现原理详解
2019/07/01 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
python 对xml解析的示例
2021/02/27 Python
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
《小猫刮胡子》教学反思
2014/02/21 职场文书
财务人员的自我评价范文
2014/03/03 职场文书
物流管理专业推荐信
2014/09/06 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
如何写辞职信
2015/05/13 职场文书