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)

      

  • 相关阅读:
    CEPH篇 目录
    kubernetes篇 容器用户权限控制
    深度学习篇-如何理解置信区间
    Mac软件安装篇 for Mac
    JAVA进阶篇 内存模型
    负载均衡篇 不同层次的负载均衡(2/3/4/7)
    NETTY篇 一篇文章看懂NETTY
    base64加密后无法解密
    Spring-Cloud-Gateway 从升级到放弃
    spring gateway 截取response 长度缺失
  • 原文地址:https://www.cnblogs.com/lisa2544/p/5512374.html
Copyright © 2011-2022 走看看