Vue之計算屬性詳解
1、何為計算屬性:大白話講就是計算出來的結果保存在屬性當中,可以想象為緩存。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <!--註意瞭同志們是currentTime1(),這裡有加括號的,是方法調用.--> <p>currentTime1:{{currentTime1()}}</p> <!--這裡的currentTime1是沒有加括號的,通過屬性進行調用的--> <p>currentTime2:{{currentTime2}}</p> </div> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js"></script> <script> var vm = new Vue({ el: "#app", data: { message: "hello vue!" }, methods: { currentTime1: function () { // 返回當前時間戳 return Date.now(); } }, computed: { /*註意:這裡就有計算屬性瞭:而且methods和computed方法名不能相同。 重名之後隻會調用methods方法*/ currentTime2: function () { this.message; // 返回當前時間戳 return Date.now(); } } }); </script> </body> </html>
運行結果:
可能咋一看好像沒什麼區別呀。
但是我們仔細思考一下,一個是方法,一個是屬性。
如下所示:
<div id="app"> <!--註意瞭同志們是currentTime1(),這裡有加括號的,是方法調用.--> <p>currentTime1:{{currentTime1()}}</p> <!--這裡的currentTime1是沒有加括號的,通過屬性進行調用的--> <p>currentTime2:{{currentTime2}}</p> </div>
重點:屬性是存值的,有新的值進來才會改變,不然就跟緩存一樣,我們來看這個:
解釋一下:
1.在1、2當中我們可以看出,一個是方法一個是屬性,屬性用方法來調用肯定是不行的。
2.在1、3當中我們可以看出,方法調用的值一直在變,但是屬性調用的值沒有改變這就跟他是緩存機制一樣
3.在3、4、5當中我們就可以看出,當我們一旦改變瞭函數當中的值,就相當於改變瞭緩存中的值,那麼他就會刷新值。
總結
調用方法時,每次都需要進行計算,既然有計算過程則必定產生系統開銷,那如果這個結果是不經常變化的呢?此時就可以考慮將這個結果緩存起來。采用計算機屬性可以很方便做到這一點。計算機屬性的主要特性就是為瞭將不經常變化的計算結果進行緩存,以節約我們的系統開銷。—–小夥伴們明白瞭嗎?
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- 詳解Vue.js Class與Style綁定
- Vue父子組件數據雙向綁定(父傳子、子傳父)及ref、$refs、is、:is的使用與區別
- Vue自定義指令詳解
- 詳解vue 表單綁定與組件
- Vue之Axios異步通信詳解