浅记vue中的数据劫持以及数据代理

524 阅读1分钟

vue2

数据劫持

什么是vue中的数据劫持?

vue中vm._data(vue实例-视图模型-ViewModel中的_data属性)对于data(模型-Model)进行数据劫持

数据代理

通过一个对象代理对另一个对象中属性的操作(读/写)。

什么是vue中的数据代理?

vue中vm(vue实例)对data内的全部属性进行了数据代理。

Vue中数据代理的好处:更加方便的操作data(模型-Model)中的数据。

原理

  1. 通过 Object.defineProperty() 把data对象中所有属性添加到vm上。

  2. 为每一个添加到vm上的属性,都指定一个getter/setter

  3. 在getter/setter内部去操作(读/写)data中对应的属性。