改进版通过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 相关文章推荐
鼠标放在图片上显示大图的JS代码
Mar 26 Javascript
jquery mobile changepage的三种传参方法介绍
Sep 13 Javascript
一个简单不报错的summernote 图片上传案例
Jul 11 Javascript
JavaScript实现DOM对象选择器
Sep 24 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
vue-router实现webApp切换页面动画效果代码
May 25 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
angularJS实现不同视图同步刷新详解
Oct 09 Javascript
BootStrap table实现表格行拖拽效果
Dec 01 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
Aug 07 Javascript
vue实现登录拦截
Jun 29 Javascript
简单了解JavaScript作用域
Jul 31 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
zend api扩展的php对象的autoload工具
2011/04/18 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
微信小程序 网络通信实现详解
2019/07/23 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
PyCharm设置SSH远程调试的方法
2018/07/17 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
技校毕业生的自我评价
2013/12/27 职场文书
幼师自我鉴定
2014/02/01 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
成人成长感言如何写?
2019/08/16 职场文书
golang 实现Location跳转方式
2021/05/02 Golang