1 functionClone (obj)2 {3 if(typeofObj!= ' object '){4 returnobj;5 }6 7 if(objinstanceofArray) {8 varArr=[];9 for(vari=0; i<obj.length; i++){Tenarr[i]=Clone (Obj[i]); One } A returnarr; - } - Else if(obj.constructor==Object) { the varjson={}; - for(varNameinchobj) { -json[name]=Clone (Obj[name]); - } + returnJSON; - } + Else if(objinstanceofHtmlElement) { A returnObj.clonenode (true); at } - Else{ - return NewObj.constructor (obj.valueof ()); - } -}
Test
1 vararr=[1,2,3];2 3 varArr2=Clone (arr);4 5 Arr2.pop ();6 7 Console.log (Arr2,arr);8 9 varJson={a:1,b:2};Ten varJson2=Clone (JSON); One AJson2.b=10101; - - Console.log (Json2,json); the - varOdate=NewDate (); - varOdate2=Clone (odate); - + Console.log (odate2,odate); -Window.onload=function(){ + varOdiv=document.getelementbyid (' Div1 '); A at //alert (odiv instanceof htmlelement); - varOdiv2=Clone (odiv); - - alert (odiv2.id); -};
A deep clone of an object in JavaScript