我有一个小应用程序多人在工作的WebSockets。该应用程序由一个游戏和一个聊天对象组成,每个对象都有特定的方法。如何变换一个字符串 “A,B,C,d ...” 到A·B(C,d,...);执行
基本上,客户端收到格式如下的消息字符串:"object,method,arg1,arg2"
,可能是例如“chat,newMsg,foo bar”或“game,addPlayer,name,level,team”。 第一个例子应该被翻译成chat.newMsg("foo bar");
而第二个例子是game.addPlayer(name,level,team);
我有困难,现在做的是写消息读什么。
我试图找出最好的解决方法,是这样的:
var msgreader = function(message){
msg=message.split(",");
msg[1].apply(msg[0],msg[2]);
}
但我的消息可以有很多争论,我不能完全弄清楚如何处理。 任何人都可以帮助我吗?我不会使用eval()^^
[调查 “应用” 功能。](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/apply)你也将有通过引用'window'或其他东西来找到对象,如果这是事情的方式。真的,如果我在你的情况下,我会开始修复消息格式。 – Pointy
你的工作流程似乎对我有瑕疵。不要发送晦涩的消息,而是发送一些你喜欢处理的内容。 –
虽然您可以在Google Analytics(分析)异步代码中找到此示例:https://developers.google。com/analytics/devguides/collection/gajs/asyncTracking我同意Madara - 你应该直接发送对象和方法来代替。发送实际的Javascript:obj.method(c,d,...);而不是数组,你必须在这个额外的步骤中重新解释,除非有一个原因你不能(例如GA输入这些命令时没有GA加载的情况)。 –