思宁格式。不习惯的可以移步语雀https://www.yuque.com/diracke...目标是搭建observe和autorun函数,这样在observeautorun执行完之后,当state.count变化,console.log会自动触发。核心实现步骤有两个:第一个是使用Object.defineProperty()为对象中的每个属性(这里是state)设置getter和setter方法,这个不难理解。代码如下所示。第二种是使用autorun函数和一个Dep类来实现对需要监控的属性的收集。dep.depend()方法在实例中的箭头函数中被调用,这也是重点。通过此调用,可以将activeUpdate保存的wrappedUpdate实例存储在订阅者列表中。然后当dep.notify()被调用时,subscribers中的每个wrappedUpdate都会被执行。实现如下:完成上述两个核心步骤后,只需要对observe函数稍做改动,即可在使用getter将wrappedUpdate实例存储到subscribers列表时触发dep.depend()。在setter中触发dep.notify()让订阅者中的每个wrappedUpdate再次执行。autorun中的console.log(state.count)触发getter。(这个很重要,执行getter中的dep.depend())后面的state.count++触发了setter。
