详解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中也使用$美元符号来代替document.getElementById
Jun 19 Javascript
菜鸟学习JavaScript小实验之函数引用
Nov 17 Javascript
JS原型对象通俗"唱法"
Dec 27 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
Jan 24 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
Oct 16 Javascript
JavaScript模版引擎的基本实现方法浅析
Feb 15 Javascript
详谈angularjs中路由页面强制更新的问题
Apr 24 Javascript
js自定义Tab选项卡效果
Jun 05 Javascript
bootstrap datetimepicker控件位置异常的解决方法
Nov 23 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
Jun 20 jQuery
5分钟学会Vue动画效果(小结)
Jul 21 Javascript
vue使用echarts实现水平柱形图实例
Sep 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 session_start()问题解疑(详细介绍)
2013/07/05 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
JavaScript闭包详解
2015/02/02 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
vue axios用法教程详解
2017/07/23 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
angular动态表单制作
2018/02/23 Javascript
SVG实现时钟效果
2018/07/17 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
python中子类调用父类函数的方法示例
2017/08/18 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
数学检讨书1000字
2014/02/24 职场文书
医学生求职自荐书
2014/06/12 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
认错检讨书
2014/10/02 职场文书
公司慰问信范文
2015/03/23 职场文书
学前班教学反思
2016/02/24 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
诚信高考倡议书
2019/06/24 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电