1. 程式人生 > 其它 >計算屬性與方法的區別

計算屬性與方法的區別

計算屬性與方法的區別

  • 計算屬性是基於它們的依賴進行快取的
  • 方法不存在快取
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body
>
<div id = "app"> <div>{{msg}}</div> <div>{{reverseString}}</div> <div>{{reverseString}}</div> </div> <script src="vue.js"></script> <script> /*計算屬性*/ var vm = new Vue({ el: '#app', data:
{ msg:"hahahahaaaaaaaaa" }, // 計算屬性其實是基於data中的屬性來做處理的, // 資料如果發生變化,計算屬性最終計算的結果也是跟著變化的 computed:{ reverseString: function(){ console.log('computed') return this.msg.split('').reverse().join(''); } } });
</script>
</body> </html>

在這裡插入圖片描述

computed 計算屬性裡的方法在第一次訪問的時候已經執行了,並且把計算邏輯已經處理好了,把處理好的結果已經快取起來了。等再次執行的時候它會訪問之前計算的結果,就是快取裡面已經存在的資料。
快取的好處是節省耗時的計算以節省一些效能。同樣的結果沒有必要計算兩次。

Document {{msg}} {{reverseString}} {{reverseString}} {{reverseMessage()}} {{reverseMessage()}}

在這裡插入圖片描述

  • methods方法函式每呼叫一次就會執行一次函式,但是計算屬性computed如果是同樣的資料,對應的data值沒有發生變化的話,多次訪問都是第一次計算的那個結果。
  • 計算屬性是基於它們的依賴進行快取的,這裡的依賴指的就是data裡面的資料,因為computed做處理的時候都是依賴於data中的資料做處理的,只要資料中的值不發生變化,那這個計算中的結果始終是被快取的。如果data值變了的話computed裡的值也會被重新計算。快取是基於data裡的資料做快取的,data值改變值會重新計算。方法methods就不存在快取的機制了。每呼叫一次重新執行一次方法。這是computed計算屬性和methods方法的區別。
  • 快取的意義是如果函式體內所做的工作比較複雜比較耗時的話,時間開銷就會比較大,利用快取就可以節省效能。