//深度克隆
var deepClone = function(obj){
if(typeof obj !== "object") return obj; //增加类型检测的同时, 增加其他类型的处理.
if(obj instanceof Array){ //阻止 array对象 先调用 new arr.constructor(), 再赋值的情况
return obj.concat();
}
var objClone;
try{
objClone = new obj.constructor();
}catch(ex){ // constructor 是对象 或者 不能调用的浏览器内置的 constructor .
objClone = {};
}
for(var key in obj){
if((key in objClone) && typeof obj[key] !== "object" && obj[key] === objClone[key]){ //对从 new constructor() 来的非对象数据, 跳过操作, 减少总操作数
continue;
}
objClone[key] = (obj[key] === null || typeof obj[key] !== "object") ? obj[key] : arguments.callee(obj[key]);
}
return objClone;
};
js 深度克隆
最新推荐文章于 2024-03-29 17:02:05 发布