JS实现深拷贝

发布于 2020-07-02  224 次阅读


//深拷贝的实现方法,不支持函数
let arr=[0,1,2,{a:"a",b:"b",c:"c"}];
let arr2=clone(arr);
function clone(obj){
	let objType=checkType(obj);
	let temp;
	if( objType==="Array" ){
		temp=[];
	}else if( objType==="Object" ){
		temp={};
	}else{
		return obj;
	}
	for( let i in obj ){
		let tempType=checkType(obj[i]);
		if( tempType==="Array"  || tempType==="Object" ){
			temp[i]=clone(obj[i]);
		}else{
			temp[i]=obj[i];
		}
	}
	return temp;
}
function checkType(target){
	return Object.prototype.toString.call(target).slice(8,-1);
}


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。