zoukankan      html  css  js  c++  java
  • 对象拷贝

    for in 对象复制继承

    浅拷贝

    for(var attr in Parent){
    	children[attr] = Parent[attr];
    }
    
    function extend(obj1,obj2){
    	for(var attr in obj2){
    		obj1[attr] = obj2[attr];
    	}
    }
    
    extend(children,Parent);

    深拷贝

    var obj = {
    	a:{b:10}
    }
    function deepCopy(obj){
    	if(typeof obj != 'object'){
    		//console.trace();
    		return obj;
    	}
    	var newObj = {};
    	for(var attr in obj){
    		newObj[attr] = arguments.callee(obj[attr]);
    	}
    	return newObj;
    }
    
    var obj2 = deepCopy(obj);
    
    obj2.a.b=20;
    alert(obj.a.b)  

    写法2——渡一

    浅克隆

    var obj = {
        name:'abc',
        age:123,
        sex:'female'
    }
    
    var obj1 = {}
    
    function clone(origin,target){
        var target = target || {};
        for(var prop in origin){
            target[prop] = origin[prop];
        }
        return target;
    }
    clone(obj,obj1)

    深克隆

    /*deepcopy*/
    var obj = {
        name : 'abc',
        age : 19,
        card : ['visa','master'],
        wife : {
            name : 'bcd',
            son : {
                name : 'aaa'
            }
        }
    }
    
    
    function deepCopy(origin,target){
        var target = target || {},
            toStr = Object.prototype.toString(),
            arrStr = "[Object Array]";
        for(var prop in origin){
            if(origin[prop] != "null" && origin.hasOwnProperty(prop)){ //判断是不是自己对象上的属性
                if(typeof(origin[prop]) == 'Object'){    //是不是引用值
                    target[prop] = toStr.call(origin[prop]) == arrStr ? [] : {}; //判断是[]还是{}
                    deepCopy(origin[prop],target[prop]); //递归继续分解
                }else{
                    target[prop] = origin[prop]
                }
    
            }
        }
        return target;
    }
    var obj1={}
    deepCopy(obj,obj1)

      

  • 相关阅读:
    密码框组件
    文本框组件
    列表框组件
    复选框组件
    单选按钮组件
    nginx for windows
    Mesa 3D
    下载服务器文件到本地
    消息服务
    Redis查看已注册的提供者消费者信息
  • 原文地址:https://www.cnblogs.com/lisa2544/p/5512374.html
Copyright © 2011-2022 走看看