tips:只做了一层简单的监视,data里面含有多层嵌套就失效了。
let data = {name: 'syukinmei',address: 'zhejiang'}function Observer(obj) {// 汇总对象中所有的属性形成一个数组const keys = Object.keys(obj)keys.forEach(k => {Object.defineProperty(this, k, {get() {console.log(this, obj, '的getter调用了');return obj[k];},set(val) {obj[k] = val;console.log(obj, `${k}被修改了,我要去解析模板,生成虚拟DOM了`);}})})}// 创建一个监视的实例对象,用于监视data中属性的变化const obs = new Observer(data);console.log('obs', obs);// vm实例对象,模拟new了一个Vueconst vm = {};vm._data = data = obs;


