直接看代码:分别使用计算属性和方法获得值
<!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次。