之前看到博客的关于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(); 
因为还没有全面测试过,欢迎拍砖!
您可能感兴趣的文章:
