改进版通过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 相关文章推荐
JavaScript页面刷新与弹出窗口问题的解决方法
Mar 02 Javascript
JQuery Easyui Tree的oncheck事件实现代码
May 28 Javascript
读jQuery之十 事件模块概述
Jun 27 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
Jan 25 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
Bootstrap每天必学之按钮(Button)插件
Apr 25 Javascript
javascript基础知识
Jun 07 Javascript
原生JS获取元素集合的子元素宽度实例
Dec 14 Javascript
JQuery获取鼠标进入和离开容器的方向
Dec 29 Javascript
jQuery表格的维护和删除操作
Feb 03 Javascript
整理关于Bootstrap警示框的慕课笔记
Mar 29 Javascript
解决vue点击控制单个样式的问题
Sep 05 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
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
php的memcached客户端memcached
2011/06/14 PHP
php 文件上传实例代码
2012/04/19 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
用js实现in_array的方法
2013/11/05 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
python实现的阳历转阴历(农历)算法
2014/04/25 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
详解python中的lambda与sorted函数
2020/09/04 Python
电子商务专业个人的自我评价分享
2013/10/29 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
大专学生求职信
2014/07/04 职场文书
监考失职检讨书
2015/01/26 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
Python包argparse模块常用方法
2021/06/04 Python
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android