改进版通过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中获取checkbox选中项等操作及注意事项
Nov 24 Javascript
js取得html iframe中的元素和变量值
Jun 30 Javascript
JavaScript实现动态创建CSS样式规则方案
Sep 06 Javascript
Javascript window对象详解
Nov 12 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
Sep 26 Javascript
JS Array创建及concat()split()slice()的使用方法
Jun 03 Javascript
Angular2内置指令NgFor和NgIf详解
Aug 03 Javascript
原生node.js案例--前后台交互
Feb 20 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
May 16 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
Mar 13 Javascript
js实现幻灯片轮播图
Aug 14 Javascript
Vue elementUI表单嵌套表格并对每行进行校验详解
Feb 18 Vue.js
分享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
php5 pdo新改动加载注意事项
2008/09/11 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
vue2中filter()的实现代码
2017/07/09 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
详解webpack2异步加载套路
2018/09/14 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
Python编程中time模块的一些关键用法解析
2016/01/19 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Django配置跨域并开发测试接口
2020/11/04 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
精伦电子Java笔试题
2013/01/16 面试题
自我评价个人范文
2013/12/16 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
阅兵口号
2014/06/19 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
四风问题查摆材料
2014/08/25 职场文书
2015年路政工作总结
2015/05/22 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers