1. 程式人生 > >js物件的深層 拷貝

js物件的深層 拷貝

//物件的深層 拷貝
		function deepCopy(src,dist){
			dist = dist || {};
			for(var i in src){
				if(typeof src[i] == 'object'){
					//這裡一定要初始化物件,不然傳遞null進去,沒有物件指標,
					//無法將生成的物件賦值到dist[i]上
					dist[i] = (src[i].constructor === Array)?[]:{};
					//遞迴執行,dist[i] 已經賦初始值
					deepCopy(src[i],dist[i]);
				}else{
					dist[i] = src[i];
				}
			}
			return dist;
		}
		
		var demo = {
			name : "zhangsan",
			age  : 12,
			prefer: ["吃飯","睡覺","喝水"],
			state:{
				location:"南京",
				cn:"中國"
			}
		}
		//傳遞一個 {} 和 (null,undefined)效果是不一樣的,
		//傳遞的是null沒有物件指標,執行深拷貝後dist沒有賦值。
		var dist = {};
		var xx = deepCopy(demo,dist);