vue雙向綁定底層原理(數據劫持)感悟

代碼參考:https://www.cnblogs.com/wangjiachen666/p/9883916.html

一步步走完整個流程,對雙向綁定豁然開朗了許多,具體的代碼可以看看上面的博客,這裏只說說自己學習的感受

1,爲什麼要使用Object.defineProperty?

調完代碼後我發現,這裏通過函數定義的get和set在監聽值變化的過程中起到了很大的作用,無論是在去修改值還是讀取值,都必須要通過get和set屬性去獲取,並且在訂閱和發佈更新的過程中也必須通過這個屬性去獲取對象

2,代碼中如何保證修改的節點只在監聽隊列裏保存一次?

在watcher文件中有兩個類的函數,其中一個是get,值得注意的是在結構體建立的時候就調用了,直接將自己綁定到this上,當去讀取data中的值時,會調用了observer中的get方法,在observer的get中監聽到這個target,所以無論是什麼節點,只有在建立時纔會加入到監測隊列中,所以不會有重複加入的問題

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章