我在考虑我是否应该使用 DOM 事件。它已经提供给开发者一个基本发布订阅功能:用 addEventListener 来监听事件,然后触发事件。 但是有一个问题是:事件是必须绑定到 DOM 元素或者 window 上。JavaScript 没有提供给你其他继承自 EventTarget 的模型。
思考:将 EventTarget 作为一个对象可以不用创建自定义 PubSub 系统。🤔
跟着这个思路,一个初略大致的代码如下(ps:先不考虑代码的可执行性)
/* When a user added, do something useful like update UI */ EventManager.subsribe('useradd', function(user) { console.log(user); });
/* The UI submits the data, lets publish the event. */ form.onsubmit(function(e) { e.preventDefault(); // do something with user fields. EventManager.publish('useradd', user); });