JavaScript中的浅拷贝和深拷贝

浅拷贝
把一个对象的地址拷贝到另一个对象中,指向相同,对象中的属性或方法都是一起拷贝过去的

    //浅拷贝,把一对象A中的内容直接拷贝到对象中B中
    var obj1={
      name:"风斯托罗斯基",
      age:20,
      car:["奔驰","宝马","奥拓"]
    };

    var obj2={};
    function extend(a,b) {
      //把a对象中的东西,拷贝到b对象中
      for(var key in a){
        b[key]=a[key];
      }
    }
    extend(obj1,obj2);


    console.dir(obj1);
    console.dir(obj2);

深拷贝
把一个对象中的属性,依次的,一个一个的复制到另一个对象中

 //深拷贝:把一个对象中的属性,依次的,一个一个的复制到另一个对象中
    var obj1={
      name:"风斯托罗斯基",
      age:20,
      car:["奔驰","宝马","奥拓"],
      dog:{
        name:"哮天犬",
        age:2,
        color:"黑色"
      }
    };

    var obj2={};
    //把a中的拷贝到b中
    function extend(a,b) {
      //遍历a这个对象中所有的属性
      for(var key in a){
        var item=a[key];//获取了a对象中的属性
        if(item instanceof Array){
          b[key]=[];//在b对象中添加一个属性,但是这个属性的类型是数组,
          extend(item,b[key]);
        }else if(item instanceof Object){
          b[key]={};
          extend(item,b[key]);
        }else{
          b[key]=item;
        }
      }
    }

    extend(obj1,obj2);
    console.dir(obj2);
    console.dir(obj1);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从前,海底生活着一群神族,掌管海棠花生长的椿和天神湫是发小,湫喜欢和椿在一起。 一天,椿参加成人礼化作...
    叁念阅读 446评论 0 0
  • 题目描述实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点...
    难以置信的优雅阅读 183评论 0 0
  • 穿過那片煙霧,夜聖雅就走出了雲淡風清島。這片煙霧,他走了很久,因而他來到外面的時候已是夜晚。 夜路,難免令...
    独孤空杯阅读 235评论 0 1
  • “这是一部很多人看多写过的电影,可我,还是想写。”——题记 1 这天,店里来了一个男孩。 很明显,他是附近七中的学...
    小唠君阅读 650评论 0 0
  • 儿子喜欢爬高, 手扶着从高处一跃而下, 无比兴奋的脸上洋溢着满足, 但是他从不敢自己从从高处跳下 我手一离开, 他...
    吕小朋阅读 86评论 0 0