改进版通过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 替换
Feb 19 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
May 05 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
Apr 26 Javascript
使用jQuery获取data-的自定义属性
Nov 10 Javascript
jQuery实现的导航下拉菜单效果
Jul 04 Javascript
js添加千分位的实现代码(超简单)
Aug 01 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
Dec 14 Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
Nov 17 Javascript
ng-events类似ionic中Events的angular全局事件
Sep 05 Javascript
JS实现十分钟倒计时代码实例
Oct 18 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
Apr 25 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实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
javascript call方法使用说明
2010/01/11 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python局部赋值的规则
2013/03/07 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
对Python w和w+权限的区别详解
2019/01/23 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
重大事项社会稳定风险评估方案
2014/06/15 职场文书
营销总监岗位职责
2014/09/16 职场文书
谢师宴邀请函
2015/02/02 职场文书
2015大学生求职信范文
2015/03/20 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python