2011-07-05 34 views
1

在/ socket.io代码伴随this article以下代码的node.js是用来挂接事件:关于产品socket.io事件挂钩在下面的代码

socket.on('message', function(message) { 
    var handler = messageFactory[message.messageType]; 
    $chatMessages.append(handler(message)); 
    }); 

什么是逻辑/效果引用messageFactory作为数组(或至少使用[]符号)?它是否为不同的messageType创建不同的句柄?

谢谢!

回答

1

引用messageFactory作为数组(或至少使用[]符号)的逻辑/效果是什么?它是否为不同的messageType创建不同的句柄?

messageFactory是具有两种方法chatsystem的对象。

我会承担message.messageType或者是"chat""system"

所以messageFactory[message.messageType]只是获取的两种方法之一。

然后handler(message)调用该方法。

这是监守messageFactory.chat === messageFactory["chat"]

如果你看看服务器文件(“上市5:聊天室模块。”),你会看到方法返回

return { 
    messageType: 'system', 
    text: originalNick + ' changed nick to ' + newNick 
}; 

所以服务器返回的消息对象在客户端上读取的messageType属性时,看起来messageType仅为"chat""system"

该代码基本上是面向对象命令设计模式。它根据返回的对象类型运行不同的命令

+0

感谢您的回答,这很有道理!对于为什么messageFactory [“chat”]与messageFactory.chat相同,我仍然有些困惑。这只是关于JavaScript的东西?你知道我在哪里可以找到关于该语言功能的更多信息吗? – Evan

+0

@joe ['Object properties'](http://bonsaiden.github.com/JavaScript-Garden/#object.general)。阅读花园。这是语言的一部分 – Raynos