js对象克隆方法

方法1:

function clone(obj){
    var o;
    switch(typeof obj){
    case 'undefined': break;
    case 'string'   : o = obj + '';break;
    case 'number'   : o = obj - 0;break;
    case 'boolean'  : o = obj;break;
    case 'object'   :
        if(obj === null){
            o = null;
        }else{
            if(obj instanceof Array){
                o = [];
                for(var i = 0, len = obj.length; i < len; i++){
                    o.push(clone(obj[i]));
                }
            }else{
                o = {};
                for(var k in obj){
                    o[k] = clone(obj[k]);
                }
            }
        }
        break;
    default:        
        o = obj;break;
    }
    return o;    
}

方法2:

function clone2(obj){
    var o, obj;
    if (obj.constructor == Object){
        o = new obj.constructor(); 
    }else{
        o = new obj.constructor(obj.valueOf()); 
    }
    for(var key in obj){
        if ( o[key] != obj[key] ){ 
            if ( typeof(obj[key]) == 'object' ){ 
                o[key] = clone2(obj[key]);
            }else{
                o[key] = obj[key];
            }
        }
    }
    o.toString = obj.toString;
    o.valueOf = obj.valueOf;
    return o;
}

方法3:

function clone3(obj){
    function Clone(){}
    Clone.prototype = obj;
    var o = new Clone();
    for(var a in o){
        if(typeof o[a] == "object") {
            o[a] = clone3(o[a]);
        }
    }
    return o;
}

 

 

 

posted @ 2014-04-01 20:32  你猜不猜  阅读(1380)  评论(0编辑  收藏  举报