Maven:解決IDEA無法下載原始碼
1. 為什麼叫計算屬性?
因為計算屬性是對 data 中的屬性 進行計算的出來的 屬性
2. 計算屬性的 get() 和 set() 方法,底部是用 Object.defineProperty 實現的,當有人讀取 計算屬性 時,get 就會被呼叫,並且返回值就作為 該計算屬性的值
3. vm._data 可以讀取到 data 裡面的值,但是不會讀取 computed 裡面的值
4. 計算屬性 和 data 屬性一樣,都掛載在 vm 例項身上,vm._data 中的屬性 計算完之後,直接掛載在 vm 身上
5. 在computed 中的 get() 方法中,vue 把 this 指向了 vm ,因此可以直接呼叫 this.xxx 讀取到需要進行計算的屬性
6. get() 什麼時候呼叫? 1. 在初次獲取時,會呼叫 2. 當所依賴的資料發生改變時,會呼叫
7. computed() 相比於 methods 有什麼優勢?
它有快取,當同一個計算屬性被呼叫多次又沒有發生變化時,get() 只會呼叫一次,後面幾次呼叫直接從快取裡面讀取,而 methods 不會快取,每次都呼叫
8. 計算屬性 不要用 xxx.get() 去呼叫,vue 會自動呼叫計算屬性的get()方法,並且將 return 的值 作為計算屬性的值,放在 vm 身上。
9. 計算屬性沒有真正的值,要想改變它的值,只有改變它依賴的資料,就會自動呼叫 set() 方法。
總結:
計算屬性:
1. 定義: 要用的屬性不存在,要通過已有屬性計算得來。
2. 原理:底層藉助了 Object.defineProperty 方法提供的 getter 和 setter。
3. get 函式什麼時候執行?
(1)初次讀取時會執行一次。
(2)當依賴的資料發生改變時會被再次呼叫。
4. 優勢:與methods實現相比,內部有快取機制(複用),效率更高,除錯方便。
5. 備註:
1. 計算屬性最終會出現在vm上,直接讀取使用即可。
2.如果計算屬性要被修改,那必須寫 set 函式去響應修改,且 set 中要引起計算時依賴的資料發生改變。
6. 簡寫:
當計算屬性確定只有 get 沒有 set 時,可以簡寫成:
computed: {
fullName() {
return this.firstName + this.lastName;
}
}
表面上是一個函式,實際上是執行了這個函式,並且把 return 的值 作為 vm.fullName 的值。