Javascript 具有条件的事件发射器

Javascript 具有条件的事件发射器,javascript,object,events,Javascript,Object,Events,我已经创建了一个事件发射器类。它工作正常。让我告诉你如何: 这是一节课: class EventEmitter{ constructor() { this.events = {}; } on(eventName,callback) { if(this.events[eventName]) { this.events[eventName].push(callback); } else {

我已经创建了一个事件发射器类。它工作正常。让我告诉你如何:

这是一节课:

class EventEmitter{

    constructor() {
        this.events = {};
    }

    on(eventName,callback) {
        if(this.events[eventName]) {
            this.events[eventName].push(callback);
        } else {
            this.events[eventName] = [callback]; 
        }
    }

    trigger(eventName, ...rest) {
        if(this.events[eventName]) {
            this.events[eventName].forEach(cb => {
                cb.apply(null,rest); 
            });
        }
    }
 }
通过这门课,我可以听一些特定的事件。像这样:

 const ee = new EventEmitter();
 ee.on('change', (aa) => {
     console.log(aa);
 });
然后我可以用触发器方法触发它

 ee.trigger('change','Argument');
现在我想听听有特定条件的事件

例如:

 ee.on({'change': 'barack the boss'}, (aa) => {
     console.log(aa);
 });
上述代码位应仅在触发器如下所示时执行:

 //wont run
 ee.trigger('change','barack is no boss');
//will run
 ee.trigger('change','barack the boss');
我想知道怎么做。我不是要你写我的代码,我想要一个例子或者一个正确方向的步骤

先谢谢你

全部代码:

class EventEmitter{

    constructor() {
        this.events = {};
    }

    on(eventName,callback) {
        if(this.events[eventName]) {
            this.events[eventName].push(callback);
        } else {
            this.events[eventName] = [callback]; 
        }
    }

    trigger(eventName, ...rest) {
        if(this.events[eventName]) {
            this.events[eventName].forEach(cb => {
                cb.apply(null,rest); 
            });
        }
    }
 }

//events has been created and is currently an empty object
 const ee = new EventEmitter();

//even has been created, this event has a function which will be executed when event is triggered
 ee.on({'change': 'barack the boss'}, (aa) => {
     console.log(aa);
 });

 //wont run
 ee.trigger('change','barack is no boss');
//will run
 ee.trigger('change','barack the boss');
我要做的是使用
.on()
事件寄存器。这将允许您通过传递的对象进行迭代(同时,这将使您能够在单个调用中注册多个事件)


使用
Object.Keys
可以像数组一样通过参数对象进行迭代。然后,您可以在触发事件时将密钥的值注册为条件。

快速提问,这两个触发器对您来说是否有效:
ee.trigger('change','barack the boss')
ee.trigger('change','barack the boss',someArgumentForTheListeners)
@Axel最后一个就好了。它可以用第二个来检查情况,最后一个来检查听众。我不确定我是否明白,但你可以这样做