改进版通过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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
jquery与js函数冲突的两种解决方法
Sep 09 Javascript
JS图片无缝、平滑滚动代码
Mar 11 Javascript
JavaScript操作Cookie详解
Feb 28 Javascript
基于jquery实现下拉框美化特效
Feb 02 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
Mar 21 Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 Javascript
js 实现复选框只能选择一项的示例代码
Jan 23 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
May 21 Javascript
JS利用prototype给类添加方法操作详解
Jun 21 Javascript
electron+vue实现div contenteditable截图功能
Jan 07 Javascript
js实现圆形菜单选择器
Dec 03 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 读取和修改大文件的某行内容的代码
2009/10/30 PHP
php通用防注入程序 推荐
2011/02/26 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
ScrollDown的基本操作示例
2013/06/09 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
详解Python 切片语法
2019/06/10 Python
python 动态调用函数实例解析
2019/10/21 Python
wxPython窗体拆分布局基础组件
2019/11/19 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
浅谈Python程序的错误:变量未定义
2020/06/02 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
汽车技术服务英文求职信范文
2014/01/02 职场文书
毕业生自荐书
2014/02/02 职场文书
开学典礼决心书
2014/03/11 职场文书
公司证明怎么写
2014/09/22 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python