Vue之計(jì)算屬性詳解
1、何為計(jì)算屬性:大白話講就是計(jì)算出來(lái)的結(jié)果保存在屬性當(dāng)中,可以想象為緩存。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <!--注意了同志們是currentTime1(),這里有加括號(hào)的,是方法調(diào)用.--> <p>currentTime1:{{currentTime1()}}</p> <!--這里的currentTime1是沒(méi)有加括號(hào)的,通過(guò)屬性進(jìn)行調(diào)用的--> <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 () { // 返回當(dāng)前時(shí)間戳 return Date.now(); } }, computed: { /*注意:這里就有計(jì)算屬性了:而且methods和computed方法名不能相同。 重名之后只會(huì)調(diào)用methods方法*/ currentTime2: function () { this.message; // 返回當(dāng)前時(shí)間戳 return Date.now(); } } }); </script> </body> </html>
運(yùn)行結(jié)果:
可能咋一看好像沒(méi)什么區(qū)別呀。
但是我們仔細(xì)思考一下,一個(gè)是方法,一個(gè)是屬性。
如下所示:
<div id="app"> <!--注意了同志們是currentTime1(),這里有加括號(hào)的,是方法調(diào)用.--> <p>currentTime1:{{currentTime1()}}</p> <!--這里的currentTime1是沒(méi)有加括號(hào)的,通過(guò)屬性進(jìn)行調(diào)用的--> <p>currentTime2:{{currentTime2}}</p> </div>
重點(diǎn):屬性是存值的,有新的值進(jìn)來(lái)才會(huì)改變,不然就跟緩存一樣,我們來(lái)看這個(gè):
解釋一下:
1.在1、2當(dāng)中我們可以看出,一個(gè)是方法一個(gè)是屬性,屬性用方法來(lái)調(diào)用肯定是不行的。
2.在1、3當(dāng)中我們可以看出,方法調(diào)用的值一直在變,但是屬性調(diào)用的值沒(méi)有改變這就跟他是緩存機(jī)制一樣
3.在3、4、5當(dāng)中我們就可以看出,當(dāng)我們一旦改變了函數(shù)當(dāng)中的值,就相當(dāng)于改變了緩存中的值,那么他就會(huì)刷新值。
總結(jié)
調(diào)用方法時(shí),每次都需要進(jìn)行計(jì)算,既然有計(jì)算過(guò)程則必定產(chǎn)生系統(tǒng)開(kāi)銷,那如果這個(gè)結(jié)果是不經(jīng)常變化的呢?此時(shí)就可以考慮將這個(gè)結(jié)果緩存起來(lái)。采用計(jì)算機(jī)屬性可以很方便做到這一點(diǎn)。計(jì)算機(jī)屬性的主要特性就是為了將不經(jīng)常變化的計(jì)算結(jié)果進(jìn)行緩存,以節(jié)約我們的系統(tǒng)開(kāi)銷。-----小伙伴們明白了嗎?
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
對(duì)Vue- 動(dòng)態(tài)元素屬性及v-bind和v-model的區(qū)別詳解
今天小編就為大家分享一篇對(duì)Vue- 動(dòng)態(tài)元素屬性及v-bind和v-model的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08vue權(quán)限路由實(shí)現(xiàn)的方法示例總結(jié)
這篇文章主要給大家介紹了關(guān)于vue權(quán)限路由實(shí)現(xiàn)方法的相關(guān)資料,文中通過(guò)示例代碼介紹地方非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07在vue中使用inheritAttrs實(shí)現(xiàn)組件的擴(kuò)展性介紹
這篇文章主要介紹了在vue中使用inheritAttrs實(shí)現(xiàn)組件的擴(kuò)展性介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12基于VUE實(shí)現(xiàn)判斷設(shè)備是PC還是移動(dòng)端
這篇文章主要介紹了基于VUE實(shí)現(xiàn)判斷設(shè)備是PC還是移動(dòng)端,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07詳解vue的數(shù)據(jù)劫持以及操作數(shù)組的坑
這篇文章主要介紹了vue的數(shù)據(jù)劫持以及操作數(shù)組的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04