复制代码 代码如下:
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();
因为还没有全面测试过,欢迎拍砖!
