計算屬性:
定義:要用的屬性不存在,要通過已有的屬性計算得來
原理:底層借助了Object.defineproperty方法提供的getter和setter
在用計算屬性的時候getter函數什么時候會執行?
1.在初次讀取的時候會執行一次
2.當依賴的數據發生改變的時候會被再次調用
setter什么時候使用?
如果計算屬性要被修改 那必須寫set函數去響應修改,且set中要引起計算時依賴的數據發生改變
如何使用計算屬性?
計算屬性與data等屬性一樣 直接掛載於Vm實例對象上,直接讀取即可
計算屬性的優點?
methods中的方法每使用一次方法就會被調用一次,不管里面的數據是否發生變化Vue都會將模板重新解析一遍。而使用計算屬性時,因為其內部有緩存機制,所以只要里面影響結果的變量沒有發生變化,無論計算屬性被使用多少次,函數都只會被調用一次,所以相對於methods來說計算屬性效率更高,調試起來更為方便,
Vue中何時使用計算屬性?何時使用方法?何時使用觀察者?
methods 方法
在我們使用 Vue 時可能會有很多方法會被放到這里,比如它可能是我們的事件處理方法,一些操作方法的邏輯等等,但是它不能跟蹤任何依賴,而且還會在每次組件重新加載時都會執行,這就會導致我們的方法會執行很多次,如果我們的 UI 操作頻繁的話,會導致性能的問題,所以在一些開銷比較大的計算時,我們應該嘗試其他方案進行優化處理。
computed 計算屬性
從名字我們其實大概的可以看出,它是一個依賴於其他屬性的,當依賴的屬性發生變化的時候就會觸發我們計算屬性的邏輯,而且是基於它們依賴的屬性進行緩存的,也就是說只有當依賴的屬性發生變化的時候才會從新求值。
相比 methods 的優勢在於不必每次從新執行定義的函數,這給我們的性能上有着很大的優勢,對我們已經存在的數據屬性非常好的處理方式,例如我們案例中 fullName 的計算,優勢非常明顯。
watcher 觀察者
當一些數據屬性變化時,我們執行一些邏輯時觀察者對我們非常重要,它可以幫助我們監聽屬性的變化,只要屬性發生變化,我們就可以執行對應的一些操作。
簡單來說,就是需要相加,相減,相乘,除,數據映射的時候,或者你不想手動調用函數的時候,你就可以用到,不需要你自己手動操作,他自己幫你執行。
例如:需要計算一個表格的總和,如果使用方法時,需要寫一個計算總和的函數,然后每次調用,但如果使用計算屬性時,表格數據一變化,他自己就自動變化了,不需要你手動動用。
可以理解為它就是一個變量。只不過是通過計算得到的變量,它和函數不一樣,函數中可能會有很多操作,比如說請求接口,打開彈窗,等等,但是計算屬性,就單純的是為了制造一個變量提供給你使用而已。