//三目运算符 只有两个判断是if else 时可以用三目运算符简化函数
// 条件判断 ? 是 : 否 并且返回值
// var num = 1 > 0 ? 2 + 2 : 1 + 1; //4
var num = 1 > 0 ? ("10" > "9" ? 1 : 0) : 2; //0
function deepClone(origin, target) {
var target = target || {}, //做一个target预处理
toStr = Object.prototype.toString, //调用toString,看是Array还是Object
arrStr = '[object Array]';
for(prop in origin) { //循环遍历原对象
if(origin[prop] !== 'null' && typeof(origin[prop]) == 'object'){ //判断原对象每个属性的类型,引用类型or基本类型
// if(toStr.call(origin[prop]) == arrStr) { //判断引用类型是Array or Object
// target[prop] = []; //新建目标对象(target)要添加属性(prop)数组对象
// deepClone(origin[prop], target[prop]); //因为是再次克隆对象,所以递归调用deepClone
// }else{
// target[prop] = {};
// }
(toStr.call(origin[prop]) == arrStr) ? target[prop] = [] : target[prop] = {};
deepClone(origin[prop], target[prop]);
}else{ //原对象的属性是基本类型
target[prop] = origin[prop];
}
}
return target;
}