# 手写vue的mvvm实现原理
## 1:mvc和mvvm的区别?
MVC:modal-view-controller,比较直观的架构模式;
用户操作 --->>view层(展示层以及用户交互等)--->controller(对应用户交互后的业务逻辑处理)---->>modal(数据持久化)---->view(将结果反馈回给view)
MVVM:将 **“数据模型/数据双向绑定”** 思想作为核心,因此没有controller层,view和modal间没有联系,通过view modal进行交互,且modal和 viewmodal之间的交互是相互的,因此,view层的数据变化,同时会修改数据源中的数据,
vue的mvvm模式:**数据劫持**, **object.definePropterty**、**发布订阅**
angular的mvvm模式是通过**脏值检测**实现
## 2实现vue的mvvm
### 2.1 明确Object.defineProperty()用法
##### 定义
MDN中定义如下:
Object.defineProperty()方法会直接在一个对象上定义一个新的属性,或者修改一个对象的现有属性,并返回这个对象