<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                >[danger] 數組/對象 -> 深拷貝/淺拷貝 ***** 參考: 1. 淺拷貝, 例如: ``` var arr = [1, 2, 3, 4]; var brr = arr; brr.push(5); console.log(arr); // 結果: [1, 2, 3, 4, 5] // 思考: 為什么往brr數組末尾插入元素5, arr數組也跟著改變了呢? ``` > 總結: 淺拷貝: 無論arr還是brr操作數組, 都會對, 對方產生影響 淺拷貝->影子.互相影響 ![](https://box.kancloud.cn/ca7884465977de19745271275142061a_1117x660.png) 2. 深拷貝, 例如: ``` var arr = [1, 2, 3, 4]; var brr = new Array(); arr.map(item => { brr.push(item); }) brr.push(5); console.log(arr); // 結果: [1, 2, 3, 4] // 思考: 為什么這次brr沒有影響arr呢? ``` > 總結:, 因為brr逐級拷貝, arr的值到自己的內存中, 擺脫原來數組/對象帶來的影響 深拷貝->克隆人關系, 互不影響 ![](https://box.kancloud.cn/a3adde6f76ea6c0d05c6e2a9ed20e306_1105x641.png) ***** 擴展: 項目中數組/對象常用深克隆方式 ``` function deepClone(obj){ // 判斷參數是數組還是對象, 準備一個空的 let objClone = Array.isArray(obj) ? [] : {}; // 非空, 并且是對象 (array或者object的typeof都是object) if(obj && typeof obj === "object"){ // 遍歷數組/對象 for(key in obj){ // 判斷是否是當前對象的屬性(防止復制原型鏈上的對象) if(obj.hasOwnProperty(key)){ //判斷obj子元素是否為對象,如果是,遞歸復制 if(obj[key] && typeof obj[key] === "object"){ objClone[key] = deepClone(obj[key]); } else { //如果不是,簡單復制 objClone[key] = obj[key]; } } } } return objClone; } ``` ***** 思考: 當數組里保存的是對象, 改變對象的值, 會不會影響數組里的對象, 舉例: ``` var arr = [ { "name": "李東旭", "age": 20 } ]; for (var i = 0; i < arr.length; i++){ arr[i]['name'] = "程序員"; } console.log(arr); // 結果 里面的對象的name變成了"程序員" ``` ***** 答案: 這里是淺復制, 可以影響arr數組里的對象
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看