对象克隆和eval()的Javascript问题>> [

问题描述 投票:0回答:1
我正在用socketio和nodejs服务器编写一个小游戏,对我来说这是很新的。当某人创建游戏时,它将信息发送到服务器,服务器将创建一个包含所有游戏信息的对象。我正在使用eval()使对象以游戏名称命名,例如“ bob_game = {...}”。这是我的代码:

games.push("Partie de " + data.pseudo); gamesStatus.push("lobby"); eval("var " + data.pseudo + "_game = {name :'" + data.pseudo + "',status : 2,playerNb : 1,maxPlayerNb :" + data.nbPlayers + ",players : ['" + data.pseudo + "'], xCoords : [], yCoords : [], directions : []}"); io.emit(data.pseudo, {command : "joinGame", game : data.pseudo}); io.emit("updateGameList", {command : "updateGameList", game : games, gameStatus : gamesStatus});

这一切都正常工作,我可以将所有信息发回给其他用户,说已经创建了一个游戏!在网站上,它们是每个可参与游戏的按钮。当您按下其中一个时,它将带有游戏ID和玩家名称的joinGameRequest发送到服务器。所有信息均已正确收集,并且我可以设置一个临时对象来代替bob_game对象:

game = eval(gameName + "_game");

这避免了我调用原始对象bob_game时进行更改,否则我会将eval()放到任何地方,因为bob并不总是被称为bob ...但是,我知道在对“游戏”进行所有更改之后,我必须将所有属性转移回bob_game,“以某种方式保存一切”。那就是我遇到的问题...我说的是游戏没有定义...即使我已经在上面几行进行了更改,但我能够记录游戏的playerNb ...所以定义了游戏...

console.log(game.playerNb); eval(gameName + "_game = game");

我需要帮助xD

我正在用socketio和nodejs服务器编写一个小游戏,对我来说这是很新的。当某人创建游戏时,它将信息发送到服务器,服务器将创建一个对象,其中包含所有...

javascript node.js object socket.io eval
1个回答
2
投票
不要这样做:
© www.soinside.com 2019 - 2024. All rights reserved.