详解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 相关文章推荐
Code:loadScript( )加载js的功能函数
Feb 02 Javascript
jQuery的12招常用技巧分享
Aug 08 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
Dec 28 Javascript
js遍历、动态的添加数据的小例子
Jun 22 Javascript
JS模拟自动点击的简单实例
Aug 08 Javascript
简单易用的倒计时js代码
Aug 04 Javascript
Js可拖拽放大的层拖动特效实现方法
Feb 25 Javascript
深入浅析javascript立即执行函数
Oct 23 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
Mar 09 Javascript
Express使用html模板的详细代码
Sep 18 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
Nov 21 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
ASP知识讲座四
2006/10/09 PHP
PHP的面试题集,附我的答案和分析(一)
2006/11/19 PHP
php木马攻击防御之道
2008/03/24 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
cakephp常见知识点汇总
2017/02/24 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
Python中实现三目运算的方法
2015/06/21 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
销售团队激励口号
2014/06/06 职场文书
学校安全管理责任书
2014/07/23 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
员工工作心得体会
2019/05/07 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
HTML常用标签超详细整理
2022/03/19 HTML / CSS