JavaScript 手写实现发布订阅事件处理器
1、源码实现
type Listener<T = any> = (p: T) => void
type Listeners = Record<string, Listener[]>;
export type {
Listener,
Listeners,
}
export interface event {
type: string;
target: this;
[attachment: string]: any;
}
/**
* 事件派发器
*/
class EventDispatcher {
private listeners: Listeners;
constructor() {
this.listeners = {
};
}
/**
* 添加监听事件
* @param type
* @param listener
*/
addEventListener(type: string | string[], listener: Listener) {
if (Array.isArray(type)) {
type