<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之旅 廣告
                vue的雙向綁定是基于數據劫持的方式實現的,vue2數據劫持用的object.defineProperty()來劫持對象的屬性,vue3是直接劫持對象,set數據變化的時候,發布消息給訂閱者,觸發相應的監聽回調。 ![](https://img.kancloud.cn/26/03/260333d5d1b86e8034b10be451744047_730x390.png) **執行過程:** 當執行 new Vue() 時,Vue 就進入了初始化階段,一方面Vue 會遍歷 data 選項中的屬性,并用 Object.defineProperty 將它們轉為 getter/setter,實現數據變化監聽功能;另一方面,Vue 的指令編譯器Compile 對元素節點的指令進行掃描和解析,初始化視圖,并訂閱 Watcher 來更新視圖, 此時Wather 會將自己添加到消息訂閱器中(Dep),初始化完畢。 當數據發生變化時,Observer 中的 getter 方法被觸發(注意這里觸發什么),getter 會立即調用Dep.notify(),Dep 開始遍歷所有的訂閱者,并調用訂閱者的 update 方法,訂閱者收到通知后對視圖進行相應的更新。同理當表單輸入內容發生變化時, 就會觸發setter,watcher監聽機制就會執行, watcher通知Vue生成新的VDOM樹,再通過render函數進行渲染,生成真實DOM 。 **Object.defineProperty 的缺點**: 總體上說致命的缺點是: * 不能監聽數組的變化 * 必須遍歷對象的每個屬性 * 必須深層遍歷嵌套的對象 **ES6中的Proxy的優點**: 總的來說呢,Proxy是剛好解決了上述**Object.defineProperty**的缺點: **針對對象:**針對整個對象,而不是對象的某個屬性,所以也就不需要對 keys 進行遍歷。 **支持數組:**Proxy 不需要對數組的方法進行重載,省去了眾多 hack,減少代碼量等于減少了維護成本,而且標準的就是最好的。 當然除此之外還有以下幾個原因: Proxy 的第二個參數可以有 13 種攔截方法,這比起 Object.defineProperty() 要更加豐富 Proxy 作為新標準受到瀏覽器廠商的重點關注和性能優化,相比之下 Object.defineProperty() 是一個已有的老方法。
                  <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>

                              哎呀哎呀视频在线观看