2021-10-29

本文探讨如何使对象变得可观测,通过`Object.defineProperty()`进行依赖收集。在getter中收集依赖,setter中通知依赖更新,使用依赖管理器类来存储依赖项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、让对象变得可观测

  1. 使依赖变得可观测:Object.defineProperty(obj,key,configObject)
  2. 依赖收集:
    1. 什么是依赖:我们把谁用了数据就称作依赖,把这些依赖都放在一个数组里
    2. 何时收集依赖:

      所谓谁用到了这个数据,其实就是谁获取了这个数据,而可观测的数据被获取时会触发getter属性,那么我们就可以在getter中收集这个依赖。同样,当这个数据变化时会触发setter属性,那么我们就可以在setter中通知依赖更新。

      总结一句话就是:在getter中收集依赖,在setter中通知依赖更新

    3. 收集的依赖放到何处:给每个数据都建一个依赖数组,谁依赖了这个数据我们就把谁放入这个依赖数组中 => 依赖管理器Dep

待续