我正在使用节点js和套接字IO创建一个游戏。获取:RangeError:超出最大调用堆栈大小
我创造的球员如下
var player = new playa.playa();
player.name = info.name;
player.picture = info.picture;
player.email = info.email;
player.user_id = info.user_id;
player.socket = socket;
然后我的播放器添加到我的阵列
playerPool[info.user_id] = player;
映射,然后我就可以参考playerPool [USER_ID],而不必通过循环
迭代我想将我的播放器加入我的游戏
g.addPlayer(playerPool[info.user_id]);
this.addPlayer = function(player)
{
var self = this;
if(this.max_players > this.current_players.length)
{
self.current_players[player_userid] =player;
}
}
不过,我不断收到一个错误
for(var key in obj) RangeError max call stack size exceeded
我的问题是
- 为什么JavaScript的通过我的钥匙循环?
如果我叫
player.user_id
返回播放器类的用户ID,所以我知道这是一个有效的对象。
我从来没有要求JavaScript遍历该对象,只需将它映射到游戏类中的玩家阵列就像我对我的玩家池一样。然而,这似乎是一个问题。有没有人招致同样的问题?
如何被playPool阵列宣布? – Huangism 2014-09-03 18:24:58
首先,我看到current_player是一个对象,它将不会有长度,除非你分配current_player = []但如果你初始化这种方式current_player [user_id]其中用户id = 50将自动创建50个值,这将使长度为50 – Sunand 2014-09-03 18:27:22
@Huangism var playerPool = [];那不是问题。我能够传递玩家对象,甚至可以在游戏类中提取它的属性。问题是“玩家”对象不能被分配给self.current_players这是一个类广泛var this.current_players = [] – Dnaso 2014-09-03 19:43:47