详解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 相关文章推荐
img的onload的另类用法
Jan 10 Javascript
JavaScript CSS菜单功能 改进版
Dec 20 Javascript
prettify 代码高亮着色器google出品
Dec 28 Javascript
JS画线(实例代码)
Nov 20 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
Node.js 日志处理模块log4js
Aug 28 Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 Javascript
js判断传入时间和当前时间大小实例(超简单)
Jan 11 Javascript
php结合js实现多条件组合查询
May 28 Javascript
vue计算属性无法监听到数组内部变化的解决方案
Nov 06 Javascript
小程序中的箭头函数的具体使用
Jun 19 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
preg_match_all使用心得分享
2014/01/31 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
javascript常用方法总结
2015/05/14 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
Python中获取对象信息的方法
2015/04/27 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
Python切片操作深入详解
2018/07/27 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
python3中property使用方法详解
2019/04/23 Python
python顺序执行多个py文件的方法
2019/06/29 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
成功的餐厅经营创业计划书
2014/01/15 职场文书
先进个人事迹材料
2014/01/25 职场文书
党员公开承诺书内容
2014/05/20 职场文书
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python