vue为啥能实现响应式,首先Object.defineProperty与proxy能实现这个功能,通过set get配置拦截数据,并做依赖收集,在数据更新时,作数据的派发更新。
数据被读取时被劫持,也就是在监听函数或js中,有数据被用到并读取到,就会触发get value 或get函数,通过内部依赖收集,并能记录相关依赖逻辑,在数据被修改,且变化的时候,会派发更新,才会被追踪到并修改。
如果函数被监听,就能在数据被修改时重新执行函数,因为记录在第一次运行时被收集依赖,再次运行即可运行相关函数,做到数据与函数联动变化,以此保证数据一致性与正确性。