Vue的计算属性和methods的区别主要在于计算属性是基于的依赖缓存的,下面是例子:
<body>
<div id="app">
111111
</div>
<script>
var app = new Vue({
el:'#app',
data:{
firstName:'Jack',
lastName:'Green'
},
computed:{
fullName_c:function(){
console.log("fullName_c");
return this.firstName + ' ' + this.lastName;
}
},
methods:{
fullName_m:function(){
console.log("fullName_m");
return this.firstName + ' ' + this.lastName;
}
}
})
var name1 = app.fullName_c;
console.log("1:" + name1);
name1 = app.fullName_c;
console.log("2:" + name1);
console.log("//-------------------------------");
var name2 = app.fullName_m();
console.log("1:" + name2);
name2 = app.fullName_m();
console.log("2:" + name2);
</script>
执行结果如下:
可见,对于计算属性fullName_c和methods定义的方法fullName_m,相同的依赖,计算属性对结果做了缓存,两次获取结果只调用了一次fullName_c方法,而methods定义的方法fullName_m调用了两次