• 对象拷贝


    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)

      

  • 相关阅读:
    matlab做聚类分析
    《帝王三部曲》——二月河
    Sublime Text3--安装使用教程资料整理
    CentOS7没有ftp命令的解决方法
    CentOS7没有telnet命令的解决方法
    程序员如何学习英语
    程序员指法训练
    C/C++语言的学习策略
    零基础、非计算机相关专业的如何转型程序员
    IT培训机构那些不得不说的事儿
  • 原文地址:https://www.cnblogs.com/lisa2544/p/5512374.html
Copyright © 2020-2023  润新知