數(shù)據(jù)響應(yīng)式過(guò)程中,如果是對(duì)象和數(shù)組,會(huì)創(chuàng)建一個(gè)Observer對(duì)象并掛載到該對(duì)象或數(shù)組的__ob__屬性上,此Observer對(duì)象內(nèi)的subs數(shù)組持有的Watcher對(duì)象,與該對(duì)象或數(shù)組對(duì)應(yīng)的上級(jí)對(duì)象的key屬性對(duì)應(yīng)的watcher一致(該key會(huì)在閉包內(nèi)創(chuàng)建自己的Dep),如果上級(jí)對(duì)象仍然是數(shù)組,則會(huì)繼續(xù)往上找,直到找到對(duì)象屬性對(duì)應(yīng)的watcher,直接對(duì)該對(duì)象增減屬性或者對(duì)該數(shù)組內(nèi)的某項(xiàng)進(jìn)行替換并不會(huì)通知到Observer,相反通過(guò)Vue提供的$set和$delete則會(huì)主動(dòng)通知該對(duì)象或數(shù)組上的Observer,并最終執(zhí)行各watcher內(nèi)的update實(shí)現(xiàn)更新,數(shù)組的更新同理,通過(guò)對(duì)數(shù)組原型方法進(jìn)行重寫實(shí)現(xiàn)主動(dòng)通知Observer。
Vue源碼解讀一:Vue數(shù)據(jù)響應(yīng)式原理這方面的文章很多,但是我感覺(jué)很多寫的比較抽象,本文會(huì)通過(guò)舉例更詳細(xì)的解釋。(此文面向的Vue新手們,如果你是個(gè)大牛,看到這篇文章就可以點(diǎn)個(gè)贊,關(guān)掉頁(yè)面了。)通過(guò)閱讀這篇文章,...