//发布订阅模式
    class EventEmiter {
        constructor() {
            //维护一个对象
            this._events = {
            }
        }
        on(eventName, callback) {
            if (this._events[eventName]) {
                //如果有就放一个新的
                this._events[eventName].push(callback);
            } else {
                //如果没有就创建一个数组
                this._events[eventName] = [callback]
            }
        }
        emit(eventName, ...rest) {
            console.log(...rest + ‘rest的写法‘)
            // alert(...rest)
            if (this._events[eventName]) { //循环一次执行
                this._events[eventName].forEach((item) => {
                    item.apply(this, rest)
                });
            }
        }
        removeListener(eventName, callback) {
            alert(callback)
            if (this._events[eventName]) {
                //当前数组和传递过来的callback相等则移除掉
                this._events[eventName] =
                    this._events[eventName].filter(item => item !== callback);
            }
        }
        once(eventName, callback) {
            function one() {
                //在one函数运行原来的函数,只有将one清空
                callback.apply(this, arguments);
                //先绑定 执行后再删除
                this.removeListener(eventName, one);
            }
            this.on(eventName, one);
            //此时emit触发会执行此函数,会给这个函数传递rest参数
        }
    }
    class Man extends EventEmiter { }
    let man = new Man()
    function findGirl() {
        console.log(‘找新的女朋友‘)
    }
    function saveMoney() {
        console.log(‘省钱‘)
        console.log(‘arguments‘ + JSON.stringify(arguments));
    }
    // man.once(‘失恋‘, findGirl);
    // man.on(‘失恋‘, findGirl) //失恋 ,绑定一个函数方法
    man.on(‘失恋‘, saveMoney)//失恋 ,绑定一个函数方法
    // man.removeListener(‘失恋‘, saveMoney); //移除一个函数方法
    man.emit(‘失恋‘, [‘wewe‘, ‘jjj‘]);
    // man.emit(‘失恋‘);
    // man.emit(‘失恋‘);
//绑定一次,触发多次,也只执行一次。触发后一次将数组中的哪一项删除掉下次触发就不会执行