EventEmitter 是否只是将函数映射到一个对象中?

Does EventEmitter simply map functions in an object?

例如

var event = {
    message: function(message){console.log(message);}
}

//polling here
{
    if(response.type == "message")
    {
        event[response.type](response.message);
    }
}

应该与

类似
events.on("message", function(message){console.log(message);});

//polling here
{
    events.emit(response.type, response.message);
}

如果不是,除了像.once这样的辅助功能外,它与EventEmitter有什么不同?

我出于不同的原因同时使用两者。 EventEmitter 用于事件驱动函数,而 event 对象用于保持一组有组织的函数以从单个上下文 (event) 触发。

编辑:

修改代码以处理多个 functions/listeners。

var event = {
    message: []
}

event.message.push(function(message){console.log(message)});

//polling here
{
    if(response.type == "message")
    {
        for(var func in event[response.type])
        {
            event[response.type][func](response.message);
        }

    }
}

好吧,从更广泛的角度来看,它确实是一个对象(EvenEmitter class),它公开了一组方法来向事件注册侦听器函数,并删除这些侦听器函数,以及其他各种变异的函数它是内部关闭的事件对象。

除此之外,所有触发事件的核心模块都继承自 EventEmitter class,从而获得对中央事件对象的访问权限。 因此,是的,它确实将函数映射到一个对象。