改进版通过Json对象实现深复制的方法


Posted in Javascript onOctober 24, 2012

之前看到博客的关于Json对象的深复制方法,即

var obj = { 
sayName: function() { 
alert(this.name); 
}, 
name:'静水渊' 
};var cloneObj=JSON.parse(JSON.stringify(obj));cloneObj.sayName();

但这种方式,不能复制属性值是函数的属性,因此改进了方法,以下是具体代码:
var obj = { 
sayName: function() { 
alert(this.name); 
}, 
name:'静水渊' 
}; 
function clone(){ 
var str,newObj; 
str= JSON.stringify(obj, function(key, value) { 
return (typeof value == 'function' ? value.toString().replace(/^function(.*)/g, "jsonFunction$1") : value); 
}); 
newObj = JSON.parse(str, function (key, value) { 
if (/^jsonFunction(.*)/.test(value)) { 
var strFun = '('+value.replace(/^jsonFunction(.*)/, "function$1")+')'; 
value = eval(strFun); 
} 
return value; 
}); 
return newObj; 
} 
var cloneObj=clone(obj); 
cloneObj.sayName();

因为还没有全面测试过,欢迎拍砖!
Javascript 相关文章推荐
JavaScript 比较时间大小的代码
Apr 24 Javascript
jquery 多行滚动代码(附详细解释)
Jun 17 Javascript
js实现省市联动效果的简单实例
Feb 10 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
jQuery模拟黑客帝国矩阵效果实例
Jun 28 Javascript
boostrapTable的refresh和refreshOptions区别浅析
Jan 22 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
May 05 Javascript
Vue上传组件vue Simple Uploader的用法示例
Aug 25 Javascript
浅谈Node模块系统及其模式
Nov 17 Javascript
AngularJS 应用模块化的使用
Apr 04 Javascript
js实现淘宝首页的banner栏效果
Nov 26 Javascript
详解ES6 中的Object.assign()的用法实例代码
Jan 11 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
Oct 24 #Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
Oct 24 #Javascript
JavaScript window.document的属性、方法和事件小结
Oct 24 #Javascript
javaScript 删除字符串空格多种方法小结
Oct 24 #Javascript
javascript中input中readonly和disabled区别介绍
Oct 23 #Javascript
关于js new Date() 出现NaN 的分析
Oct 23 #Javascript
js Dialog 实践分享
Oct 22 #Javascript
You might like
PHP生成静态页
2006/11/25 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
Django实现自定义404,500页面教程
2017/03/26 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
如何安装ruby on rails
2014/02/09 面试题
数控技术专科生自我评价
2014/01/08 职场文书
招聘与培训专员岗位职责
2014/01/30 职场文书
经销商订货会主持词
2014/03/27 职场文书
创建无烟单位实施方案
2014/03/29 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
2015年工会工作总结
2015/03/30 职场文书
团委副书记工作总结
2015/08/14 职场文书
小学科学课教学反思
2016/02/23 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
Python学习之迭代器详解
2022/04/01 Python
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle