zoukankan      html  css  js  c++  java
  • JavaScript克隆对象的三个实用方法

    方法1

    function clone(obj){
    	var o;
    	if(typeof obj == "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]);
    				}
    			}
    		}
    	}else{
    		o = obj;
    	}
    	return o;
    }
    

    方法2 

    function clone(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] = clone(obj[key]);
                }else{
                    o[key] = obj[key];
                }
            }
        }
        o.toString = obj.toString;
        o.valueOf = obj.valueOf;
        return o;
    }
    

    方法3

    function clone(obj){
    	function Fn(){}
    	Fn.prototype = obj;
    	var o = new Fn();
    	for(var a in o){
    		if(typeof o[a] == "object") {
    			o[a] = clone(o[a]);
    		}
    	}
    	return o;
    }
    
  • 相关阅读:
    STM32的低功耗模式
    C语言的面向对象技术
    SDIO学习
    读十倍效率开发者有感
    三极管
    压敏电阻
    freertos之任务
    tsar采集数据原理
    NTP学习路线
    使用awk提取字符串中的数字或字母
  • 原文地址:https://www.cnblogs.com/snandy/p/2006687.html
Copyright © 2011-2022 走看看