三个关键字【惰性】【缓存】【异步】
- 计算属性 computed
- 计算属性返回的值不属于 data,但是基于data声明的值
- 会根据它们所依赖的数据的变化而自动重新计算
- 惰性计算
- 初始化不会执行,只有在第一次访问时才会被计算
- render 函数执行时,会触发计算属性的getter
- 有缓存功能
- 依赖数据不变,直接曲缓存的计算结果
- 初始化data和computed,分别代理其set以及get方法, 对data中的所有属性生成唯一的dep实例
- 对计算属性生成唯一的 watcher
- 执行render函数时会访问计算属性
- 在源码中有一个 dirty 属性
- 初始化时dirty为true
- dirty 为 true 才会重新求值
- 里面不能进行异步操作
- 用于需要基于已有数据计算出新数据的场景
- 可以设置 get、set 方法 实现双向绑定
- 监听器 watch
- 观察特定的数据变化,并在数据发生变化时执行自定义的回调函数。
- 可以获取到新值、旧值
- 立即执行,不是惰性的
- 允许复杂操作,可以执行异步逻辑
- 可以对复杂数据类型对象,使用深度监听 deep
- 没有缓存
- 方法 method
- 不会自动响应数据的变化,需要在调用时执行