function deepClone(oldObj) {
//如果传入的对象是null。则返回null
if(oldObj == null){
return null;
//利用typeof传入的是什么类型,如果不是对象或者数组,直接克隆当前对象返回
} else if(typeof(oldObj) != 'object'){
return oldObj;
}
//利用Array.isArray()API查看当前传入的对象是不是数组,如果是数组则创建空数组,如果不是则创建空对象
var newObj = Array.isArray(oldObj) ? [] : {};
//遍历传入的对象
for(var key in oldObj){
//把传入对象的属性和值,依次克隆到新对象 ,这里再次调用函数本身,就是为了进行深度克隆,如果传入的对象有引用类型的值,利用递归再次进行深入克隆
newObj[key] = deepClone(oldObj[key]);
}
return newObj;
}