2021-10-11 前端達(dá)人
首先我們?yōu)槊總€(gè)vue屬性用Object.defineProperty()實(shí)現(xiàn)數(shù)據(jù)劫持,為每個(gè)屬性分配一個(gè)訂閱者集合的管理數(shù)組dep;然后在編譯的時(shí)候在該屬性的數(shù)組dep中添加訂閱者,v-model會(huì)添加一個(gè)訂閱者,{{}}也會(huì),v-bind也會(huì),只要用到該屬性的指令理論上都會(huì),接著為input會(huì)添加監(jiān)聽事件,修改值就會(huì)為該屬性賦值,觸發(fā)該屬性的set方法,在set方法內(nèi)通知訂閱者數(shù)組dep,訂閱者數(shù)組循環(huán)調(diào)用各訂閱者的update方法更新視圖。
一小段手寫實(shí)現(xiàn)代碼
僅供參考
1
藍(lán)藍(lán)設(shè)計(jì)( tweetduck.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)
藍(lán)藍(lán)設(shè)計(jì)的小編 http://tweetduck.com