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的更多內容!

推薦閱讀: