深拷贝:拷贝还是复制,深:把一个对象中所有的属性或者方法,一个一个的找到.并且在另一个对象中开辟相应的空间,一个一个的存储到另一个对象中

    1. var obj1={
    2. age:10,
    3. sex:"男",
    4. car:[["鸟不鸟","玩不玩"],"宝马","特斯拉","奥拓"],
    5. dog:{
    6. name:"大黄",
    7. age:5,
    8. color:"黑白色"
    9. }
    10. };
    11. var obj2={};//空对象
    12. //通过函数实现,把对象a中的所有的数据深拷贝到对象b中
    13. function extend(a,b) {
    14. for(var key in a){
    15. //先获取a对象中每个属性的值
    16. var item=a[key];
    17. //判断这个属性的值是不是数组
    18. if(item instanceof Array){
    19. //如果是数组,那么在b对象中添加一个新的属性,并且这个属性值也是数组
    20. b[key]=[];
    21. //调用这个方法,把a对象中这个数组的属性值一个一个的复制到b对象的这个数组属性中
    22. extend(item,b[key]);
    23. }else if(item instanceof Object){//判断这个值是不是对象类型的
    24. //如果是对象类型的,那么在b对象中添加一个属性,是一个空对象
    25. b[key]={};
    26. //再次调用这个函数,把a对象中的属性对象的值一个一个的复制到b对象的这个属性对象中
    27. extend(item,b[key]);
    28. }else{
    29. //如果值是普通的数据,直接复制到b对象的这个属性中
    30. b[key]=item;
    31. }
    32. }
    33. }
    34. extend(obj1,obj2);
    35. console.dir(obj1);
    36. console.dir(obj2)

    image.png