在计算属性中其实是由这样两个方法setter和getter。
computed: {
fullName:{
//计算属性一般没有set方法,只读属性
set:function(value){
const names = value.split("-")
this.firstName = names[0]
this.lastName = names[1]
},
get:function(){
return this.firstName + "-" + this.lastName
}
}
}
但是计算属性一般没有set方法,只读属性,只有get方法,但是上述中value就是新的值,也可以使用set方法设置值,但是一般不用。
计算属性和methods的对比
代码如下,html布局:
<div id="app">
<!-- 使用方法methods -->
<p>{{fullName()}}</p>
<p>{{fullName()}}</p>
<p>{{fullName()}}</p>
<!-- 使用计算属性computed -->
<p>{{fullName1}}</p>
<p>{{fullName1}}</p>
<p>{{fullName1}}</p>
</div>
===分别调用===
new Vue({
el: "#app",
data: {
firstName: 'zhang',
lastName: 'san'
},
methods: {
fullName() {
console.log('调用了fullName方法');
return this.firstName + this.lastName
}
},
computed: {
fullName1() {
console.log('调用了计算属性');
return this.firstName + this.lastName
}
}
})
得到结果:方法调用了三次,只计算了一次
1.methods,即使firstName和lastName没有改变,也需要再次执行
2.计算属性有缓存,只有关联属性改变才会再次计算