Vue中資料雙向繫結的原理

2021-10-14 11:35:29 字數 734 閱讀 9928

es5方法 object.defineproperty(物件名,屬性名,配製物件)

有兩個缺點:1)一次只能劫持乙個屬性,需要for in去遍歷物件 2)如果在劫持之後有新增了乙個屬性,那這個屬性是沒有被劫持的,需要額外進行劫持操作

for (let key in data) ,

set(value) })}

//新增屬性

data.info = "你好"

目前vue穩定版2.6.12 實現資料雙向繫結的的原理是=>object.defineproperty()  es5語法 相容ie9+

vue3.0 實現資料雙向繫結的原理是=>proxy**es6語法 相容ie11+

proxy**:在目標物件之前設定一層攔截,外界對目標物件的訪問都先通過這層攔截,優點:1)能劫持整個物件的所有屬性 不需要遍歷 2)新增的屬性也可以劫持 缺點:相容性差

let data = 

//obj:**物件

//data:**的目標物件

const obj = new proxy(data, ,

set(target, key, value)

})obj.age = 19;

//新增屬性

data.info = '高富帥'

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