我正在使用節點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