<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >[success] # 引用父對象 ~~~ 1.在特定情況下需要刪除子節點的內容,剛才的案例將'枝'和'葉'再度細分, 讓'葉'不能在添加,所有數據內容都存在我們在'枝'中定義的數組,這樣對 我們操作'葉子'必須要找到他的枝干才行,因此需要'保存的時候要引用父對象' 2.書中的解釋是'能需要讓請求從子節點往父節點上冒泡傳遞。' ~~~ >[danger] ##### 代碼案例 ~~~ 1.當刪除的時候 this.parent 存的是父對象因此直接調用 2.判斷存儲的對象是否是當前實例 來決定是否刪除 3.儲存內容可以倒著存 ~~~ ~~~ // Folder 文件 var Folder = function (name) { this.name = name this.parent = null this.files = [] }; // 給添加的對象增加父節點的指向 Folder.prototype.add = function (file) { file.parent = this this.files.push(file) }; Folder.prototype.scan = function(){ console.log( '開始掃描文件夾: ' + this.name ); for ( var i = 0, file, files = this.files; file = files[ i++ ]; ){ file.scan(); } }; // 當刪除的時候 this.parent 存的是父對象因此直接調用 // 判斷存儲的對象是否是當前實例 來決定是否刪除 Folder.prototype.remove = function(){ if ( !this.parent ){ //根節點或者樹外的游離節點 return; } for ( var files = this.parent.files, l = files.length - 1; l >=0; l-- ){ var file = files[ l ]; if ( file === this ){ files.splice( l, 1 ); } } }; // 文件 -------------------------- var File = function( name ){ this.name = name; this.parent = null; }; File.prototype.add = function(){ throw new Error( '不能添加在文件下面' ); }; File.prototype.scan = function(){ console.log( '開始掃描文件: ' + this.name ); }; File.prototype.remove = function(){ if ( !this.parent ){ //根節點或者樹外的游離節點 return; } for ( var files = this.parent.files, l = files.length - 1; l >=0; l-- ){ var file = files[ l ]; if ( file === this ){ files.splice( l, 1 ); } } }; // ------------------ 調用 --------------- var folder = new Folder( '學習資料' ); var folder1 = new Folder( 'JavaScript' ); var file1 = new Folder ( '深入淺出 Node.js' ); folder1.add( new File( 'JavaScript 設計模式與開發實踐' ) ); folder.add( folder1 ); folder.add( file1 ); folder1.remove(); //移除文件夾 folder.scan(); ~~~
                  <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>

                              哎呀哎呀视频在线观看