一、mvvm双向数据绑定,即数据变化和视图更新。查看更改更新数据。二、知识补充,1、数据劫持1)vue2.0采用了es5的Object.defineProperty(object,property,{config})。classVue{constructor(obj){this.option=obj;this.data=obj.data;这个。观察(这个。数据);}observe(obj){//遍历对象if(typeofobj!=='object')returnObject.keys(obj).forEach(key=>{this.reactive(obj,key,obj[key])})}reactive(obj,key,value){this.observe(value);//递归遍历对象Object.defineProperty(obj,key,{get(){console.log('get',key)returnvalue},set(newVal){if(newVal===value)returnconsole.log('set',key)returnvalue=newVal}})}}letdata={name:'zhangsan',age:14、address:{city:'beijing'}}varvue=newVue({data})vue.data.age=18vue.data.address.city='324'2、发布订阅方式参考https://segmentfault.com/a/11...三、双向数据绑定(v-model)1、实现一个observe(listener)监听数据变化。2、实现一个watcher(观察者),接受observe属性变化的消息,然后在watcher中执行相应的方法更新视图。3、实现一个订阅者收集订阅者(集合依赖),统一管理监听器Observer和订阅者Watcher;4.实现一个compile(编译器)
