欢迎来到代码驿站!

JavaScript代码

当前位置:首页 > 网页前端 > JavaScript代码

改进版通过Json对象实现深复制的方法

时间:2021-04-21 09:37:25|栏目:JavaScript代码|点击:
之前看到博客的关于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();

因为还没有全面测试过,欢迎拍砖!

上一篇:layui 数据表格 点击分页按钮 监听事件的实例

栏    目:JavaScript代码

下一篇:谈一谈JS消息机制和事件机制的理解

本文标题:改进版通过Json对象实现深复制的方法

本文地址:http://www.codeinn.net/misctech/105546.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有