大家应该这computed和watch都具有一定的了解了,那就直接开始说重点吧!
相同点:
都可以用来监听属性值的变化并做出相应操作(只是看谁更合适)
区别:
computed计算属性:
1.支持缓存,只有依赖项发生改变时,才会重新计算
2.计算属性不支持异步操作
3.内部有两个方法 get和 set,当被监听的数据改变时会自动触发set 并返回最新数据;
(也可以这样说:get是被动触发,依赖项改变自身跟着改变。set自身改变影响依赖项改变(默认得到自身的值),例如购物车全选反选功能)
4.一个数据受多个数据影响时使用 computed,例如计算总价等
watch侦听器:
1.不支持缓存,数据改变时直接触发相应操作
2.支持异步操作,(可不说:监听的函数接收了两个参数,第一个为最新数据,第二个为之前的值)
3. 需要监听对象里面的属性的话可以开启深度监听 deep:true
4.需要立即监听可以使用 immediate:true 来实现,(可不说:此时监听的函数学法为 handler() {});
5.一个数据影响多个数据时使用 watch,例如搜索框等
总结:大致面试答到这些即可,自己可以优化下作答,比如说语言可以简化下