vue雙向資料繫結的原理

2021-09-25 13:08:31 字數 607 閱讀 9133

var keyvalue = 88;

var obj = {};

object.defineproperty(obj,'key', ,

set: function(newvalue)`);

}});obj.key; // 88

keyvalue = 99;//改變keyvalue 值

obj.key; // 99

// "obj物件的key屬性已經繫結了變數keyvalue的值"

obj.key = 100;

keyvalue; //100 obj物件的key已經繫結了變數keyvalue的值,兩個已雙向繫結

物件obj獲取屬性key的值時,會觸發上面的get方法,得到的是變數keyvalue的值,然後當重新設定key的值時,觸發set方法,會將變數keyvalue的值改變為設定的值,如此就實現了乙個簡單的雙向繫結:改變keyvalue,obj.key得到的值也會改變,重新設定obj.key,keyvalue一樣會隨之改變。

當然,vue的雙向繫結實際更複雜,但最基本的原理就是基於object.defineproperty()方法改變資料訪問的預設行為來實現的。

後面還會繼續深入

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

vue資料雙向繫結原理

vue的資料雙向繫結的小例子 html index.js function selfvue data,el,exp 對data的每一層級的屬性進行監聽,如果變化執行notify observe data 初始化模板資料的值 el.innerhtml this data exp new watcher...