改进版通过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 相关文章推荐
JQuery从头学起第三讲
Jul 06 Javascript
使用JS编写的随机抽取号码的小程序
Aug 11 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
Aug 18 Javascript
vue移动端实现红包雨效果
Jun 23 Javascript
js for终止循环 跳出多层循环
Oct 04 Javascript
解决vue移动端适配问题
Dec 12 Javascript
解决layui轮播图有数据不显示的情况
Sep 16 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
微信小程序基于高德地图查找位置并显示文字
Oct 30 Javascript
JS写滑稽笑脸运动效果
May 28 Javascript
Vue实现图书管理小案例
Dec 03 Vue.js
JavaScript实现点击切换验证码及校验
Jan 10 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
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
在python中bool函数的取值方法
2018/11/01 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
三维科技面试题
2013/07/27 面试题
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
应届生财务会计求职信
2013/11/05 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
工程质量承诺书范文
2014/03/27 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
运动会报道稿大全
2015/07/23 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
python多线程方法详解
2022/01/18 Python