直接看代码:分别使用计算属性和方法获得值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>计算属性和methods的对比</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
<div id="box">
<h1>{{one()}}</h1>
<h1>{{one()}}</h1>
<h1>{{one()}}</h1>
<h1>{{one()}}</h1>
<h1>{{one()}}</h1>
<h1>----------------</h1>
<h2>{{two}}</h2>
<h2>{{two}}</h2>
<h2>{{two}}</h2>
<h2>{{two}}</h2>
<h2>{{two}}</h2>
</div>
<script>
var box = new Vue({
el: '#box',
data: {
three: 'methods',
four: 'computed'
},
methods: {
one() {
console.log("调用了one");
return this.three
},
},
computed: {
two() {
console.log("调用了two");
return this.four
}
},
})
</script>
</body>
</html>
效果如图:
由此可见计算属性有缓存,在this.one和this.two
的属性不变的情况下,methods调用了四次,而计算属性才调用了一次,性能上计算属性明显比methods好。而且在改动four的情况下,计算属性只调用一次,methods依然要调用4次。