发布/订阅模式
订阅者将自己的订阅事件注册到调度中心,当发布者发布该事件到调度中心-即触发该事件,由调度中心统一处理订阅者注册到调度中心的事件。
Object.defineProperty
函数
Object.defineProperty(obj, prop, descriptor)
-
obj
:要定义属性的对象 -
prop
:要定义或修改的属性的名称或Symbol
-
descriptor
:要定义或修改的属性的特性{ configurable: false, // 是否能改变或者删除 enumerable: false, // 是否出现在枚举属性中 value: undefined, // 该属性的值 writable: false, // 是否可以被赋值 get: undefined, // 访问该属性时会调用此函数 set: undefined // 属性值被改变是会调用此函数 }
- 返回值:传递给函数的对象-即
obj
原理
vue通过Object.defineProperty递归循环给每个属性实现数据劫持,每个属性以发布/订阅模式来实现数据的双向绑定-即属性变化触发Object.defineProperty
的set
函数,set
函数处理视图变化。
网友评论