- computed是计算属性,是依赖其他属性计算得出的结果;watch是监听某一个值的变化执行对应的方法。
- computed的值在getter执行后是会缓存的,只有在它依赖的属性值改变之后,下一次获取computed的值时才会重新调用对应的getter来计算;watch在每次监听的值变化时,都会执行回调。如果一个值依赖多个属性(多对一),用computed肯定是更加方便的。如果一个值变化后会引起一系列操作,或者一个值变化会引起一系列值的变化(一对多),用watch更加方便一些。
- watch的回调里面会传入监听属性的新旧值,通过这两个值可以做一些特定的操作;computed通常就是简单的计算。
- methods里面的方法不包含主动监听的能力,且相对于computed来讲没有缓存能力,每次会重新执行(在SPA切换的时候比较明显);但比较灵活,可以手动去调取。
- 它们并没有哪个更底层。watch和computed的共同之处就是每个定义的属性都单独建立了一个Watcher对象,当然这个能力是方法所不具有的。
网友评论