Vue中的计算属性computed
总结计算属性: 1.定义:要用的属性不存在,要通过已有的属性计算得来(必须是已有的属性,不能是已有的变量或者已有的数据,因为它可能会脱离vue的管理,比如放在vue外边的变量) 2.原理:底层借助了Object.defineproperty方法提供的getter和setter
? 3.get 函数什么时候被执行?
(1).初次读取时会执行一次
(2).当依赖的数据发生改变时,会被再次调用
? 4.**set函数什么时候被执行?**当fullName被修改时候
? 5.优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便
? 6.备注:
(1).计算属性最终会出现在vm上,直接读取使用即可
(2).如果计算属性要被修改,那必须写set函数去响应修改,且set中引起计算时依赖的数据发生
<body>
<div id="root">
姓:<input type="text" v-model="firstName"> <br><br>
名:<input type="text" v-model="lastName"> <br><br>
全名:<span>{{fullName}}</span>
全名:<span>{{fullName}}</span>
全名:<span>{{fullName}}</span>
全名:<span>{{fullName}}</span>
</div>
</body>
<script type="text/javascript">
Vue.config.productionTip = false
const vm = new Vue({
el: '#root',
data: {
firstName: '张',
lastName: '三'
},
computed: {
fullName: {
get() {
console.log('get被调用了');
return this.firstName + '-' + this.lastName
},
set(value) {
console.log('set', value);
const arr = value.split('-')
this.firstName = arr[0]
this.lastName = arr[1]
}
}
}
})
</script>
|