计算属性:需要对data中的已有的属性进行处理后再显示
监视属性:需要对data中的定义的属性进行监控,变化后会通知
计算属性
1.定义:要用的元素不存在,要通过已有的属性计算得来
2.原理:底层借助了object.definepropety方法提供的getter和setter
3.get函数什么时候执行?
(1)初次读取时会执行一次
(2)当依赖的数据发生改变时会被再次读取
4.优势:与method实现相比,内部有缓存机制,效率更高,调试方便
5.备注:
1.计算属性最终会出现在vm上,直接读取使用即可
2.如果计算机属性要被修改,那必须使用set属性去响应修改,且set中要引起计算时依赖的数据发生改变
监视watch
1.当被监视的属性变化时,回调函数自动调用,进行相关操作
2.监视的属性必须存在
3.监视的两种写法
(1).new Vue时传入watch配置
(2).通过vm.$watch监视
4.属性:immediate是一个boolean类型,用来设置该属性在初始化时是否需要执行一次
5.深度监视:
(1).Vue中的watch默认不监测对象内部值的改变(一层)
(2).配置deep:true设置以后可以检测对象里边的属性值(多值)
备注:
(1).Vue 自身可以检测对象内部值的变化,但vue提供的watch默认不可以
(2).使用watch时根据数据的具体结构,决定是否采用深度监测
javascript
//当只监测某一个深度属性时,就需要具体指定某个属性时,需要使用字符串形式包裹
//eg:"person.id"
watch:{
person:{
deep:true,
handler(){
alert("debdhsjfbd")
}
}
}