对浅拷贝和深拷贝的理解
浅复制 —-只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做“(浅复制)浅拷贝”,换句话说,浅复制仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅复制出来的对象也会相应改变。
深复制 —-在计算机中开辟了一块新的内存地址用于存放复制的对象。
浅拷贝实例:
//此递归方法不包含数组对象
		var obj = {a:1, arr[2,3]};
		var shallowObj = shallowCopy(obj);
		function shallowCopy(src){
			var newobj = {};
			for(var prop in src)
				{if(src.hasOwnProperty(prop))
					{newobj[prop] = src[prop];}}
					return newobj;
		}
深拷贝实例:
var obj = {a:1, 
			arr[2,3],
			nation:'中国',
			birthplace:['北京','上海'],
		};
		var obj2 = {name:'杨'};
		obj2 = deepCopy(obj,obj2);
		console.log(obj2);
		//深复制,需要达到深复制就需要用到递归
		function deepCopy(o,c){
			var c = c||{};
			for(var i in o){
				if(typeof o[i]==='object'){//要考虑深复制的问题了
					if(o[i].constructor===Array){//这是数组
						c[i] = [];
					}else{//这是对象
						c[i] = {};
					}
					deepCopy(o[i], c[i]);
				}else{
					c[i] = o[i];
				}
			}
			return c;
		}
                    
                
                
            
        
浙公网安备 33010602011771号