JavaScript数据绑定核心是建立数据与DOM关联并自动同步更新,主要实现方式有:1.发布-订阅模式(手动维护依赖);2.Object.defineProperty+观察者模式(Vue 2.x,不支持动态属性);3.Proxy+Reflect(现代推荐,支持数组/嵌套/动态属性,IE不兼容);4.脏检查(AngularJS 1.x,性能差已淘汰)。
JavaScript 实现数据绑定,核心是让数据变化自动反映到视图(UI),同时用户操作视图也能同步更新数据。它不是语言原生特性,而是通过编程模式和机制模拟“响应式”。关键在于建立数据与 DOM 的关联,并在数据变更时触发更新逻辑。
这是最基础、也最易理解的数据绑定实现方式。数据对象作为“发布者”,视图监听器作为“订阅者”,当数据发生变化时主动通知所有监听器更新 UI。
ES5 主流方案,通过劫持对象属性的 getter/setter 拦截读写,配合依赖收集与派发更新。
ES6 引入 Proxy 可代理整个对象,拦截 get/set/deleteProperty/has/ownKeys 等 13 种操作,天然支持数组、动态属性、嵌套对象。
可覆盖所有属性访问,无需递归初始化;能精确追踪依赖路径(如 obj.user.name)AngularJS 1.x 使用的方式:不劫持数据,而是在特定时机(如 digest cycle)遍历所有已注册的 watcher 表达式,比对新旧值是否变化。