我有一個小應用程序多人在工作的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加載的情況)。 –