zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    P4297 [NOI2006]网络收费
    P4207 [NOI2005]月下柠檬树
    bzoj2517 矩形覆盖
    bzoj2506 calc
    ......
    SP1811 LCS
    CF585E Present for Vitalik the Philatelist
    好康的
    CF605E Intergalaxy Trips
    字符串
  • 原文地址:https://www.cnblogs.com/wang4517/p/3639133.html
Copyright © 2011-2022 走看看