Object.defineProperty(obj,"name",{ get(){ console.log("被访问了") return obox.innerHTML }, set(data){ console.log("修改了name值",data) obox.innerHTML = data; } })
(1) 数据通过object.defineProperty 进行get set 拦截, (2) 通知 watcher ,观察者模式, 订阅发布模式,触发 组件重新渲染,创建新的虚拟dom(js对象模拟dom 树) 对比旧的虚拟dom ,找到不同的地方, 以最小的代价更新节点。