計算屬性與方法的區別
阿新 • • 發佈:2021-01-10
計算屬性與方法的區別
- 計算屬性是基於它們的依賴進行快取的
- 方法不存在快取
<!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 計算屬性裡的方法在第一次訪問的時候已經執行了,並且把計算邏輯已經處理好了,把處理好的結果已經快取起來了。等再次執行的時候它會訪問之前計算的結果,就是快取裡面已經存在的資料。
快取的好處是節省耗時的計算以節省一些效能。同樣的結果沒有必要計算兩次。
- methods方法函式每呼叫一次就會執行一次函式,但是計算屬性computed如果是同樣的資料,對應的data值沒有發生變化的話,多次訪問都是第一次計算的那個結果。
- 計算屬性是基於它們的依賴進行快取的,這裡的依賴指的就是data裡面的資料,因為computed做處理的時候都是依賴於data中的資料做處理的,只要資料中的值不發生變化,那這個計算中的結果始終是被快取的。如果data值變了的話computed裡的值也會被重新計算。快取是基於data裡的資料做快取的,data值改變值會重新計算。方法methods就不存在快取的機制了。每呼叫一次重新執行一次方法。這是computed計算屬性和methods方法的區別。
- 快取的意義是如果函式體內所做的工作比較複雜比較耗時的話,時間開銷就會比較大,利用快取就可以節省效能。