利用JSON对象实现深复制

var obj = {
    name: function() {
        alert('你好');
    },
    sex:'男'
};

function clone(obj) {
    var str = JSON.stringify(obj, function (key, value) {
        return (typeof value == 'function' ? value.toString().replace(/^function(.*)/g, "jsonFunction$1") : value);
    });
    return JSON.parse(str, function(key, value) {
        if ( /^jsonFunction(.*)/ .test(value)) {
            var strFun = value.replace( /^jsonFunction(.*)/ , "function$1");
            value = eval('(' + strFun + ')');
        }
        return value;
    });
}

console.log(clone(obj));
但情况是如下的时候,clone函数就不适用了,有待改进!!!
var obj = {
    name: function() {
        alert('你好');
    },
    sex:'男'
};
obj.name.pro='123';

var newObj=clone(obj);
console.log(newObj.name.pro);//undefined

 

 
posted @ 2012-10-25 09:29  静水渊  阅读(295)  评论(0)    收藏  举报