1     var obj = {
 2         name : "钱谦益",
 3         age : 88,
 4         card : ["visa","master"],
 5         wife : {name : "柳如是",son : {name : "小钱"}}
 6     }
 7     var obj1 = {}
 8 
 9 
10     // 1.判断是不是原始值
11     // 2.判断是数组还是对象
12     // 3.建立相应的数组和对象
13 
14     function deepClone(origin, target){
15         var target = target || {},
16             toStr = Object.prototype.toString,
17             arrStr = "[object Array]"
18         for(var prop in origin){
19             if(origin.hasOwnProperty(prop)){
20                 if(origin[prop] !== "null" && typeof(origin[prop]) == "object"){
21                     if(toStr.call(origin[prop]== arrStr)){
22                         target[prop] = [];
23                     }else{
24                         target[prop] = {};
25                     }
26                     deepClone(origin[prop],target[prop])    
27                 }else{
28                     target[prop] = origin[prop]
29                 }
30             } 
31         }return target;
32     }
View Code

 

 

 犯了多少错了~~~~~~~~

 

这两出风骚的错误,js居然不报!!!

导致的结果是:

克隆出来的obj1里面的所有引用值全部被克隆成数组!

正常结果

错误: