语法:
Object.defineProperty(obj, prop, descriptor) 数据劫持
obj: 在此上定义对象
prop: 定义或修改的属性名称
descriptor: 被定义或修改的属性描述符
返回值 -> 被传递给函数的对象 (可以重写 get set 方法)
var Book = {}; var name = ''; Object.defineProperty(Book, 'name', { set: function(value) { name = value; }, get: function() { return '《' + name + '》' } }); Book.name = '算法与数据结构'
get 在获得 name 属性的时候被调用 set 属性在设置 name 属性的时候被触发 Vue 通过这种方法进行数据劫持
订阅者-发布者模式 :通常用于消息队列中 一般有两种形式来实现消息队列 一是使用生产者和消费者来实现 二是使用订阅者-发布者模式来实现 其中订阅者和发布者实现消息队列的方式 就会用订阅者模式
Vue 双向数据绑定是数据劫持发布者-订阅者模式实现的