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/vue@2.5.21/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>
運行結果:
可能咋一看好像沒什么區(qū)別呀。
但是我們仔細思考一下,一個是方法,一個是屬性。
如下所示:
<div id="app"> <!--注意了同志們是currentTime1(),這里有加括號的,是方法調用.--> <p>currentTime1:{{currentTime1()}}</p> <!--這里的currentTime1是沒有加括號的,通過屬性進行調用的--> <p>currentTime2:{{currentTime2}}</p> </div>
重點:屬性是存值的,有新的值進來才會改變,不然就跟緩存一樣,我們來看這個:
解釋一下:
1.在1、2當中我們可以看出,一個是方法一個是屬性,屬性用方法來調用肯定是不行的。
2.在1、3當中我們可以看出,方法調用的值一直在變,但是屬性調用的值沒有改變這就跟他是緩存機制一樣
3.在3、4、5當中我們就可以看出,當我們一旦改變了函數(shù)當中的值,就相當于改變了緩存中的值,那么他就會刷新值。
總結
調用方法時,每次都需要進行計算,既然有計算過程則必定產(chǎn)生系統(tǒng)開銷,那如果這個結果是不經(jīng)常變化的呢?此時就可以考慮將這個結果緩存起來。采用計算機屬性可以很方便做到這一點。計算機屬性的主要特性就是為了將不經(jīng)常變化的計算結果進行緩存,以節(jié)約我們的系統(tǒng)開銷。-----小伙伴們明白了嗎?
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!
相關文章
對Vue- 動態(tài)元素屬性及v-bind和v-model的區(qū)別詳解
今天小編就為大家分享一篇對Vue- 動態(tài)元素屬性及v-bind和v-model的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08在vue中使用inheritAttrs實現(xiàn)組件的擴展性介紹
這篇文章主要介紹了在vue中使用inheritAttrs實現(xiàn)組件的擴展性介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12詳解vue的數(shù)據(jù)劫持以及操作數(shù)組的坑
這篇文章主要介紹了vue的數(shù)據(jù)劫持以及操作數(shù)組的坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04