computed主要是对多个变量进行计算返回一个值,当多个变量中的某个变量发生改变时,computed的值也会随之改变,最常见的例子就是购物车,当购物车内的数量发生变化时,总额也会随之发生变化
<div id="app">
{{allname}}
</div>
const vm=new Vue({
el:'#app',
data:{
onename:"孙",
twoname:"浩洋"
},computed: {
allname(){
return this.onename+' '+this.twoname
}
在这个案例中使用computed计算属性是不用带()括号的,这是因为上面的写法是简写,其实每个computed属性都是有set和get两种方法,完整格式如下
allname:{
set:function(){
},get:function(){
return this.onename+' '+this.twoname
}}
//设置computed值其实主要就是在这里写内容,set一般是不用写内容,所以我们将其省略,但是我们如果一定要加内容的话set的函数是要加参数的,传递的参数对其进行处理然后传递到data中的变量,然后get属性随之发生改变
allname:{
get:function(){
return this.onename+' '+this.twoname
}}
上面的我们还可以简写成 allname:function(){return this.onename+' '+this.twoname }
所以这就是我们为什么在使用计算属性computed时不用加()括号
computed是有缓存的
如果我们在methods中使用方法对数据进行处理,然后return一个值,是可以和computed等到相同结果的,但是,如果多次使用这个数据,methods方法就要执行一次,但computed就只用执行一次,所以computed会更加节约性能例如: