Vue資料雙向繫結原理是什麼?

2022-06-19 04:33:10 字數 606 閱讀 7786

面試官:說下vue資料雙向繫結原理是什麼?

me: 固定回答:

vue的資料雙向繫結原理是資料劫持,結合發布訂閱者模式,通過object.defineproperty()來劫持各個屬性的setter,getter屬性,當資料變化時發布訊息給訂閱者,觸發對應的**函式。

面試官: 可以具體說下嗎?詳細一點?

me: 這怎麼答?其他沒看呀?再想想,好像是。。。

需要observe的資料物件進行遞迴遍歷,包括子屬性物件的屬性,都加上setter,與getter,這樣的話這個物件的屬性賦值,就會觸發setter,就能監聽到資料變化了

compile解析模板指令,將模板中的變數替換成資料,然後初始化頁面檢視,並將每個指令對應的節點繫結新函式,新增監聽資料的訂閱者,一旦資料又變動,收到通知,更新檢視

watcher就是那個訂閱者,主要就是連線observer與compile之間的橋梁:  

· 在自身例項話時往屬性訂閱器裡面新增自己

· 自身有乙個update()的方法

· 待屬性變動dep.notice()通知時,能呼叫自身的update()方法,並觸發compile中繫結的**

心想:太難了。。。

這其實就是mvvm的機制

Vue的雙向資料繫結原理是什麼?

答 vue.js 是採用資料劫持結合發布者 訂閱者模式的方式,通過object.defineproperty 來劫持各個屬性的setter,getter,在資料變動時發布訊息給訂閱者,觸發相應的監聽 具體步驟 第一步 需要observe的資料物件進行遞迴遍歷,包括子屬性物件的屬性,都加上setter...

vue雙向資料繫結原理

vue應用的是mvvm框架,view和model分離,然後通過vm雙向資料繫結,div 原生物件即資料 var data 建立乙個 viewmodel 例項 var vm new vue 然而乙個動態資料的繫結,是怎麼實現的呢,首先vue利用es5的defineproperty方法裡的get,set...

vue雙向資料繫結原理

text id text show p var text document.getelementbyid text show document.getelementbyid show var model object.defineproperty model,name set function ne...