详解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 相关文章推荐
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
Jun 26 Javascript
javascript学习网址备忘
May 29 Javascript
AngularJs动态加载模块和依赖注入详解
Jan 11 Javascript
js点击返回跳转到指定页面实现过程
Aug 20 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
Jul 26 Javascript
React组件之间的通信的实例代码
Jun 27 Javascript
微信小程序实现传参数的几种方法示例
Jan 10 Javascript
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
Vue匿名插槽与作用域插槽的合并和覆盖行为
Apr 22 Javascript
Vue封装全局过滤器Filters的步骤
Sep 16 Javascript
详解Vue的mixin策略
Nov 19 Vue.js
vue+vant 上传图片需要注意的地方
Jan 03 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
CodeIgniter安全相关设置汇总
2014/07/03 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
cookie的secure属性详解
2015/04/08 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
Python实现的简单dns查询功能示例
2017/05/24 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
学期研究性学习个人的自我评价
2014/01/09 职场文书
网上卖盒饭创业计划书范文
2014/02/07 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
个人年终总结结尾
2015/03/06 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript