js EventBus的实现

37 阅读1分钟
class EventBus {

    constructor() {

        this.events = {};

    }

    static instance() {

        return new EventBus()

    }




    on(eventName, callback) {

        if (!this.events[eventName]) {

            this.events[eventName] = [];

        }

        this.events[eventName].push(callback);

    }

    off(eventName, callback) {

        if (this.events[eventName]) {

            this.events[eventName] = this.events[eventName].filter(cb => cb !== callback);

        }

    }

    emit(eventName, ...args) {

        if (this.events[eventName]) {

            this.events[eventName].forEach(callback => callback(...args));

        }

    }

}

  


export const eventbus = (() => EventBus.instance())()