计算属性
- 定义:要是用的属性不存在。要通过已有属性计算得来
- 原理:底层借助了Object.defineproperty方法提供的getter和setter
- 优势:与methods实现相比,内部有缓存机制(复用)。效率更高。调试方便
使用
- 计算属性最终会出现在vm上,直接读取使用即可
- 如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时代依赖的数据发生改变时
代码实例
<div id="root">
性:<input type="text" name="" id="" v-model="firstName"><br><br>
名:<input type="text" name="" id="" v-model="lastName"><br><br>
全名:<span>{{fullName}}</span>
</div>
<script>
Vue.config.productionTip=false
const vm=new Vue({
el:'#root',
data: {
// 在vue中data中的内容均视为属性
firstName:"张",
lastName:"三"
},
//当computed所依赖的数据发生改变时,computed才会改变
computed:{
fullName:{
// get的作用:当有人读取fullName时,get就会被调用,并且返回值作为fullNmae的值
// get什么时候被调用:1、初次读取fullName时。2、所依赖的数据发生变化时
get(){
// console.log(this)
// 此处的this指向vm
return this.firstName+'-'+this.lastName
},
// set什么时候被调用:当fullName被修改的时候
set(value){
console.log('set',value)
const arr=value.split('-')
this.firstName=arr[0]
this.lastName=arr[1]
}
}
// 简写方式:只考虑读取不考虑修改时才可使用
// // 此处的function代替的是get函数
// fullName(){
// return this.firstName+'-'+this.lastName
// }
}
})
</script>