代码参考:https://www.cnblogs.com/wangjiachen666/p/9883916.html
一步步走完整个流程,对双向绑定豁然开朗了许多,具体的代码可以看看上面的博客,这里只说说自己学习的感受
1,为什么要使用Object.defineProperty?
调完代码后我发现,这里通过函数定义的get和set在监听值变化的过程中起到了很大的作用,无论是在去修改值还是读取值,都必须要通过get和set属性去获取,并且在订阅和发布更新的过程中也必须通过这个属性去获取对象
2,代码中如何保证修改的节点只在监听队列里保存一次?
在watcher文件中有两个类的函数,其中一个是get,值得注意的是在结构体建立的时候就调用了,直接将自己绑定到this上,当去读取data中的值时,会调用了observer中的get方法,在observer的get中监听到这个target,所以无论是什么节点,只有在建立时才会加入到监测队列中,所以不会有重复加入的问题