【不止前端】Vue2变化侦测

变化侦测就是侦测数据的变化,当数据发生变化的时候,所依赖这个数据的地方需要执行对应的动作,可能是执行一个函数,也可能是更新视图(也是执行render函数)。

什么是变化侦测

变化侦测在前端三个框架中均有所涉及。变化侦测可以分为两种类型:一种是,一种是

在Angular和React中的变化侦测属于拉,但某个状态发生变化后,程序不知道具体是哪个状态发生了变化,只知道存在变化,然后会发送一个信号给框架,框架收到信号后,会采用暴力比对的方式找出那些DOM节点需要更新。这在Angular是脏值检查,在React中使用虚拟DOM。

在Vue中,采用的是推。当状态发送变化时,能知道是那个状态发生了变化,并推送给对应的依赖于这个状态的地方

如何跟踪变化

Vue2中采用的是Object.defineProperty, Vue3中采用的是Proxy。本文主要对前者进行介绍。

Object的变化侦测

Array的变化侦测

变化侦测相关的API实现原理