一淑趾、作用機(jī)制上
1.watch和computed都是以Vue的依賴追蹤機(jī)制為基礎(chǔ)的扣泊,它們都試圖處理這樣一件事情:當(dāng)某一個(gè)數(shù)據(jù)(稱它為依賴數(shù)據(jù))發(fā)生變化的時(shí)候延蟹,所有依賴這個(gè)數(shù)據(jù)的“相關(guān)”數(shù)據(jù)“自動(dòng)”發(fā)生變化更卒,也就是自動(dòng)調(diào)用相關(guān)的函數(shù)去實(shí)現(xiàn)數(shù)據(jù)的變動(dòng)。
2.對(duì)methods:methods里面是用來定義函數(shù)的俯萌,很顯然,它需要手動(dòng)調(diào)用才能執(zhí)行咐熙。而不像watch和computed那樣,“自動(dòng)執(zhí)行”預(yù)先定義的函數(shù)返弹。
二爪飘、從性質(zhì)上
1.methods里面定義的是函數(shù),你顯然需要像"fuc()"這樣去調(diào)用它(假設(shè)函數(shù)為fuc)默终。
2.computed是計(jì)算屬性犁罩,事實(shí)上和和data對(duì)象里的數(shù)據(jù)屬性是同一類的(使用上)。
3.watch:類似于監(jiān)聽機(jī)制+事件機(jī)制含滴。例如:watch: { firstName: function(val) {this.fullName = val +this.lastName }}firstName的改變是這個(gè)特殊“事件”被觸發(fā)的條件谈况,而firstName對(duì)應(yīng)的函數(shù)就相當(dāng)于監(jiān)聽到事件發(fā)生后執(zhí)行的方法
三递胧、watch和computed的對(duì)比首先它們都是以Vue的依賴追蹤機(jī)制為基礎(chǔ)的。
它們的共同點(diǎn)是:都是希望在依賴數(shù)據(jù)發(fā)生改變的時(shí)候泼诱,被依賴的數(shù)據(jù)根據(jù)預(yù)先定義好的函數(shù)赊锚,發(fā)生“自動(dòng)”的變化。我們當(dāng)然可以自己寫代碼完成這一切耸袜,但卻很可能造成寫法混亂牲平,代碼冗余的情況。但watch和computed也有明顯不同的地方:watch和computed各自處理的數(shù)據(jù)關(guān)系場(chǎng)景不同
1.watch擅長(zhǎng)處理的場(chǎng)景:一個(gè)數(shù)據(jù)影響多個(gè)數(shù)據(jù)
2.computed擅長(zhǎng)處理的場(chǎng)景:一個(gè)數(shù)據(jù)受多個(gè)數(shù)據(jù)影響相比于watch/computed蜈抓,methods不處理數(shù)據(jù)邏輯關(guān)系,只提供可調(diào)用的函數(shù)