详解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怎么禁用浏览器后退按钮
Mar 27 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
使用jquery制作弹出框效果
Apr 03 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
js倒计时简单实现方法
Dec 17 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
Sep 04 Javascript
JS获取子、父、兄节点方法小结
Aug 14 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 jQuery
vue h5移动端禁止缩放代码
Oct 28 Javascript
原生javascript单例模式的应用实例分析
Feb 23 Javascript
JavaScript Tab菜单实现过程解析
May 13 Javascript
vue的项目如何打包上线
Apr 13 Vue.js
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在字符断点处截断文字的实现代码
2011/04/21 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
javascript中Object使用详解
2015/01/26 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
详解django自定义中间件处理
2018/11/21 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
基于Python测试程序是否有错误
2020/05/16 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
进修护士自我鉴定
2013/10/14 职场文书
给护士表扬信
2014/01/19 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
导师工作推荐信
2015/03/27 职场文书
自我检讨书怎么写
2015/05/07 职场文书
解析Redis Cluster原理
2021/06/21 Redis
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL