話術:vue中v-model可以實現雙向繫結,其核心思想通過object.definepropery來對vue的資料進行資料劫持。
主要分為四部分
第一部分observer主要是負責對vue資料進行資料劫持,使其資料擁有get和set方法
第二部分指令解析器負責繫結資料和指令,繫結試圖更新方法
第三部分watcher負責資料監聽,當資料發生改變通知訂閱者,呼叫檢視更新函式更新檢視
第四部分mvvm作為資料繫結的入口,整合observer、compile和watcher三者,通過observer來監聽自己的model資料變化,通過compile來解析編譯模板指令,最終利用watcher搭起observer和compile之間的通訊橋梁,達到資料變化 -> 檢視更新;檢視互動變化(input) -> 資料model變更的雙向繫結效果。
object.defineproperty()的理解
作用
object.defineproperty()方法會直接在乙個物件上定義乙個新屬性,或者修改乙個物件的現有屬性,並返回此物件。
引數
object.defineproperty(obj, prop, descriptor)
obj要定義屬性的物件。
prop要定義或修改的屬性的名稱。
descriptor要定義或修改的屬性描述符。(這個引數是乙個物件)
vue雙向資料繫結
1.資料響應式原理 主要是利用object.defineproterty 來自定義object的getter,setter function observe value,cb function definereactive obj,key,val,cb set newval class vue da...
vue雙向資料繫結原理
vue應用的是mvvm框架,view和model分離,然後通過vm雙向資料繫結,div 原生物件即資料 var data 建立乙個 viewmodel 例項 var vm new vue 然而乙個動態資料的繫結,是怎麼實現的呢,首先vue利用es5的defineproperty方法裡的get,set...
模擬Vue雙向資料繫結
function eventemit this.callbacks eventemit.prototype.on function eventname,fn this.callbacks eventname push fn eventemit.prototype.emit function even...