姓名实例_methods

通过一个实例,简要介绍计算属性

​ 1.定义:要用的属性不存在,要通过已有属性计算得来

​ 2.原理;底层借助了object.defineproperty方法提供的getter和setter

​ 3.get函数什么时候执行

​ (1).初次读取时会执行一次

​ (2).当依赖的数据发生改变时会被再次调用

​ 4.优势:与methods相比,内部有缓存机制(复用),效率更高,调式方便

​ 5.备注:

​ (1).计算属性最终会出现在vm上,直接读取/操作使用即可

​ (2).如果计算属性要被修改,那必须写在set函数去响应修改,

​ 且set中药引起==计算时依赖的数据==发生改变

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<div id="root">
姓 <input type="text" v-model="firstName"> <br>
名 <input type="text" v-model="lastName"> <br>
测试 <input type="text" v-model="x"> <br>
全名 <span>{{fullName}}</span> <br>
全名 <span>{{fullName}}</span> <br>
全名 <span>{{fullName}}</span> <br>
<!-- //计算属性的get什么时候被调用?
1.除此读取fullname时,后面使用时会进行缓存。
2.所以来的数据发生改变时 -->

</div>
<script>
Vue.config.productionTip = false //阻止vue在启动时生成生产提示

const vm =new Vue({
el: '#root',
data: {
firstName: '张',
lastName: '三',
x:1
},
computed:{
fullName:{
//get有什么用?当有人读取fullname时就会被调用,返回值就作为fullname的值
//get什么时候被调用?
// 1.除此读取fullname时。
// 2.所以来的数据发生改变时
get(){
console.log("get被调用了");
console.log(this);//此处this是mv实例
return this.firstName+'-'+this.lastName
// 这里用到的值为 firstNmae、lastName
},
//set有什么用?当fullName被修改
//set什么时候被调用?
set(value){
const arr=value.split('-')
this.firstName=arr[0]
this.lastName=arr[1]
}
}
}
// 计算属性,和data/methods不一样,它不是直接放在vm上,
// 而是调用了get方法,得到返回值后再将返回值放在vm上
})
</script>