1 Vue如何實(shí)現(xiàn)響應(yīng)式?
- Vue的響應(yīng)式是建立在監(jiān)聽data中的數(shù)據(jù).
2 在Vue2中響應(yīng)式的實(shí)現(xiàn)
- Vue通過Object.defineProperty()來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的代理和監(jiān)聽
- 將數(shù)據(jù)聲明在data中,Vue會(huì)將數(shù)據(jù)進(jìn)行封裝
- 給data中的數(shù)據(jù)添加getting,setting方法.
- 在Vue發(fā)現(xiàn)數(shù)據(jù)發(fā)生變化,進(jìn)行render(數(shù)據(jù))
3 Vue響應(yīng)式中有特殊的情況.
3.1 對(duì)象
- 對(duì)象可以將所有的屬性提前聲明.
- 但是,對(duì)象有時(shí)候無(wú)法將所有的屬性進(jìn)行提前聲明.
- 需要?jiǎng)討B(tài)的添加新的屬性,這時(shí)候就需要Vue.set或者this.$set來(lái)動(dòng)態(tài)綁定.
- 實(shí)際上set API調(diào)用的也是Object.defineProperty()來(lái)實(shí)現(xiàn).
3.2 數(shù)組.
- 數(shù)組無(wú)法將未來(lái)添加的數(shù)據(jù),進(jìn)行提前聲明.
- 又無(wú)法用set API來(lái)監(jiān)聽.
- 尤雨溪使用增加原型鏈的方式,繼承數(shù)組原型.
- 在原有的基礎(chǔ)上重寫了7個(gè)數(shù)組的API
pop,push,shift,unshift,reverse,sort,splice- 幫助數(shù)組中的數(shù)據(jù)動(dòng)態(tài)的代理和監(jiān)聽.