遍历对象 for(var prop in obj) 1.判断是不是原始值,是就直接拷贝 typeof() object 2.引用值判断是数组还是对象 3.建立相应数组或对象,把数组或对象当作一个新的要拷贝的。。。 递归
例子:对象obj1克隆对象obj
function deepClone(origin,target){
var target = target || {},
toStr = Object.prototype.toString,
arrStr = '[object Array]';
//开始遍历,但凡forin循环 用origin.hasOwnProperty(prop)判断,避免拿走原型链上的东西
for(var prop in origin){
if(origin.hasOwnProperty(prop)){
//引用值
if(typeof(origin[prop] == 'object'){
if(toStr.call(origin[prop]) == arrStr){
target[prop] = [];
}else{
target[prop] = {};
}
deepClone(origin[prop],target[prop]);
//原始值
}else{
target[prop] = origin[prop];
}
}
}
return target;
}