zoukankan      html  css  js  c++  java
  • Javascript中的深拷贝和浅拷贝

    var obj = { a:1, arr: [1,2] };
    var obj1 = obj;            //浅复制
    var obj2 = deepCopy(obj);  //深复制
    

      javascript中创建对象都是存地址的,而浅拷贝的结果就是obj和obj1都指向了同一个地址,此时如果对其中obj或obj1中的任一一个元素做修改都会影响到另外一个

    obj.a = 2;
    console.log(obj1.a); //2

      而深拷贝是将对象中的所有属性一个个拷出来在另外一个区域开辟一个空间存储这些属性

    var myObj = {
    	str: "myString",
    	num : 1,
    	myArr: [{
    		arrgo : "I Am go"
    	}],
    	obj: {
    		innerobj : {
    			test : 25
    		},
    		innerstr: "myobjstring"
    	}
    }
    
    //深拷贝
    function deepCopy(obj) {
    	var ret, k, b;
    	ret = (obj instanceof Array) ? [] : {};
    
    	for(k in obj) { 
    		if((obj[k] instanceof Array) || (obj[k] instanceof Object)) {
            //利用递归逐个复制obj中的属性
    			ret[k] = clone(obj[k]);
    		} else {
    			ret[k] = obj[k];
    		}
    	}
    	return ret;
    }
    

      

  • 相关阅读:
    python wmi模块 获取windows内部信息
    Django +uwsgi+python3+nginx + mysql 部署
    POJ 1125
    POJ 1129
    POJ 1126
    POJ 1118
    POJ 1102
    POJ 1101
    POJ 1111
    POJ 1088
  • 原文地址:https://www.cnblogs.com/elexiang/p/4964275.html
Copyright © 2011-2022 走看看