观察者模式是指函数自动观察数据对象的变化, 一旦对象有变化,函数就会自动执行。
它定义了一种一对多的依赖关系,我们用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;
打印结果:当age发生变化时:打印出
这样我们就简单的实现了一个观察者模式。
如对本文有疑问, 点击进行留言回复!!
轻松解决 org.apache.taglibs.standard.tlv.JstlCoreTLV 困惑
vert实践五——Json?Protocol Buffer?FlatBuffers?
[基于tensorflow的人脸检测] 基于神经网络的人脸检测8——验证训练好的神经网络
selenium + ajax抓取英雄联盟全部英雄的详细信息及多线程保存全部皮肤图片到本地
网友评论