js深度克隆
function highClone(oldObj){
var cloneObj;
if(oldObj.constructor==Object || oldObj.constructor==Array){
cloneObj=new oldObj.constructor;
}else{
cloneObj=new oldObj.constructor(oldObj.valueOf());//个人认为这样没什么用,因为克隆方法用于复制对象,其他实例不适用,此处还不如换成return
}
for(var i in oldObj){
if(typeof oldObj[i]=="object"){
cloneObj[i]=highClone(oldObj[i]);
}else{
cloneObj[i]=oldObj[i];
}
}
cloneObj.toString=oldObj.toString;
cloneObj.valueOf=oldObj.valueOf;
return cloneObj;
}
//测试
var testObj={"1":[1,2,3],"2":{"aa":"aa","bb":"bb"},"3":function(){var dd="";}};
var testArr=[[1,2,3],{"aa":"aa","bb":"bb"},function(){var dd="";}];
var arrClone=highClone(testArr);
var ObjClone=highClone(testObj);