ES6入门系列 ----- 使用Proxy 实现观察者模式
Posted lhlvs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6入门系列 ----- 使用Proxy 实现观察者模式相关的知识,希望对你有一定的参考价值。
观察者模式是指函数自动观察数据对象的变化, 一旦对象有变化,函数就会自动执行。
它定义了一种一对多的依赖关系,我们用Proxy来实现一个简单的观察者模式(PS: 初学我们认为
观察者模式 == 发布订阅模式, 其实它们有点不同)。
例子:
const callbacks = new Set();
const observe = fn => callbacks.add(fn);
const observable = obj => new Proxy(obj, set);
function set (target, key, value, receiver)
const result = Reflect.set(target, key, value, receiver);
callbacks.forEach(observe => observe());
return result;
// 一个可观察的对象
const person = observable(name: ‘liu‘, age: 18);
function change()
console.log(`$person.name is $person.age`);
observe(change);
person.age = 19;
- 首先定义了一个observe 用来存储 要触发的函数。
- 然后定义了一个observable 函数 对 对象的设值做了一层代理,拦截赋值操作, Reflect.set用来完成默认的设值行为, 然后触发函数。
- 每当对象调用对象内部的的set方法时,就会遍历触发我们添加进callbacks里的回调函数。
打印结果:当age发生变化时:打印出
这样我们就简单的实现了一个观察者模式。
以上是关于ES6入门系列 ----- 使用Proxy 实现观察者模式的主要内容,如果未能解决你的问题,请参考以下文章