<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

          javascript中數組和對象的深拷貝和淺拷貝

          2018-5-2    seo達人

          如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

          1、首先理解一下“深拷貝”和“淺拷貝”的區別:

          淺拷貝:a = b;//a和b中存的是相同的地址,該地址指向堆內存中相同的地方,即a和b就是一個東西,改變a的值b的值也會跟著改變,同理改變b的值a的值也會發生改變;

          深拷貝:a和b中存的地址不同,但是地址對應的堆內存中的內容完全一致,即b是a的副本

          2、

          (1)數組和對象的淺拷貝一樣  ,簡單的賦值操作

          var b = a;

          如數組的淺拷貝:

          [javascript] view plain copy
          1. var a = ['1','2','3'];  
          2. var b = a;  
          3. b[0] = '5';  
          4. console.log('a',a);  
          5. console.log('b',b);  

          輸出的值為:

          對象的淺拷貝:

          [html] view plain copy
          1. var a = {name:'1',age:'2',color:'3'};  
          2. var b = a;  
          3. b.name = '5';  
          4. console.log('a',a);  
          5. console.log('b',b);  

          輸出的值為:

          (2)數組的深拷貝

          ES5:var b = a.concat();

          [javascript] view plain copy
          1. var a = ['1','2','3'];  
          2. var b = a.concat();  
          3. b[0] = '5';  
          4. console.log('a',a);  
          5. console.log('b',b);  

          輸出的結果為:

          ES6 let [...b] = a;

          (3)對象的深拷貝

          ES5: 

          [javascript] view plain copy
          1. var a = {name:'1',age:'2',color:'3'};  
          2. function copyObj(a) {  
          3. var b = {};  
          4. for(var key in a) {  
          5. b[key] = a[key];  
          6. }  
          7. return b;  
          8. }  
          9. var c = copyObj(a);  
          10. c.name = '5';  
          11. console.log('c',c);  
          12. console.log('a',a);  

          輸出的結果為:

          ES6:

          let {...b} = a;


          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務


          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合