computed原理

在Vue中,computed是一种常用的属性配置,它能够随着依赖属性的变化而自动更新值并缓存更新后的值,为我们带来很大的便利。那么computed是如何实现这样的功能的呢?

computed的实现原理基于Vue的响应式原理。当某个响应式数据被访问时,会触发getter函数,将当前Watcher对象添加到该响应式数据的依赖列表中,当该响应式数据发生改变时,会触发setter函数,通知依赖列表中的所有Watcher更新。

在computed中,其属性值所依赖的数据对象会被设置为响应式数据,当这些响应式数据发生改变时,会通知存储computed的Dep对象,标记该computed为dirty。当下次访问该computed的属性值时,computed会检查依赖的响应式数据是否发生了变更,如果没有则直接返回已缓存的属性值;如果依赖的数据发生了变更,则重新计算属性值,并将计算后的结果缓存起来。此时,该computed会将dirty标记重置为false,等待下次依赖项发生变化时再次重新计算。

因此,computed具有缓存和惰性求值的特点,能够避免重复计算,提高了程序性能。

你可能感兴趣的:(Vue,vue.js,前端,javascript)