色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

Vue是如何實現雙向數據綁定的?

方一強2年前13瀏覽0評論

數據與視圖的綁定與同步,最終體現在對數據的讀寫處理過程中,也就是Object.defineProperty()定義的數據set、get函數中。Vue中對于的函數為defineReactive,在精簡版實現中,我只保留了一些基本特性:

functiondefineReactive(obj,key,value){

vardep=newDep()

Object.defineProperty(obj,key,{

enumerable:true,

configurable:true,

get:functionreactiveGetter(){

if(Dep.target){

dep.depend()

}

returnvalue

},

set:functionreactiveSetter(newVal){

if(value===newVal){

return

}else{

value=newVal

dep.notify()

}

}

})

}

在對數據進行讀取時,如果當前有Watcher(對數據的觀察者吧,watcher會負責將獲取的新數據發送給視圖),那將該Watcher綁定到當前的數據上(dep.depend(),dep關聯當前數據和所有的watcher的依賴關系),是一個檢查并記錄依賴的過程。而在對數據進行賦值時,如果數據發生改變,則通知所有的watcher(借助dep.notify())。這樣,即便是我們手動改變了數據,框架也能夠自動將數據同步到視圖。