深层拷贝与浅层拷贝

1.区别:

   值类型:布尔类型,字符串,整型。
   引用类型: 数组,集合,对象。
   值类型保存在栈中,而引用类型需要在栈中通过引用地址在堆中找到值。

2.浅层拷贝

   例如:
      var a ={{m:1}, {n:2},3}
      var b=a.slice();
      console.log(a===b); //false
      a[0].m = 4;
      console.log(b[0].m)//4,说明拷贝的是元素的引用
      a[2] = 5;
      console.log(b[2])//3,说明拷贝的实例,(拷贝的a上面的3)


3.深层拷贝

   1.seven2 = JSON.parse(JSON.stringify(seven1));
    2.$.extend( [deep ], target, source)
       例如:
           var a = [{m:1}, {n:2},3];
           var b =[];
           $.extend(true,b,a);  //true 表示深层copy,false 指的浅层
           console.log(a === b);// false
           a[0].m = 4;
           console.log(b[0].m)//1
           a[2] = 5;
           console.log(b[2])//3
     3.Object.assigbn(target,source)   把source深层copy给target
       例如:
         var a = [{m:1}, {n:2},3];
         var b =[];
         var c=[];
        //jquery.extend(true,b,a);
         Object.assign(b,a) //深层copy对象
         console.log(a === b);// false
         c=a;   //复制引用地址
         console.log(c==a);  //true

 

posted @ 2020-12-25 11:41  北海等风吹  阅读(63)  评论(0编辑  收藏  举报