手写源码之 简单实现on emit off

            class Event {
                constructor() {
                    this.eventObj = {};
                }

                $on(eventName, fn) {
                    if (!this.eventObj[eventName]) {
                        this.eventObj[eventName] = [];
                    }

                    this.eventObj[eventName].push(fn);
                }

                $emit(eventName, ...args) {
                    if (!this.eventObj[eventName]) {
                        console.error(`并没有创建${eventName}`);
                        return;
                    }
                    this.eventObj[eventName].map((cb) => {
                        cb(...args);
                    });
                }

                $off(eventName) {
                    if (!this.eventObj[eventName]) return;
                    this.eventObj[eventName] = 0;
                }
            }

            let eventBus = new Event();
            eventBus.$on('id', function (result) {
                console.log(result);
            });
            eventBus.$off('id');

            eventBus.$emit('id', { id: 2 });
posted @ 2021-03-30 18:58  ~~Distance  阅读(97)  评论(0编辑  收藏  举报