簡體   English   中英

獲取:RangeError:超出最大調用堆棧大小

[英]Getting: RangeError: Maximum call stack size exceeded

我正在使用節點js和套接字IO創建游戲。

我正在創建以下玩家

  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

我的問題是

  1. 為什么JavaScript遍歷我的鍵?

如果我打電話

       player.user_id

它返回播放器類的用戶ID,所以我知道它是有效的對象。

我從未要求JavaScript遍歷對象,就像將其重新映射到玩家池一樣,只需將其重新映射到游戲類中的玩家數組即可。 但是,這似乎是一個問題。 有沒有人遇到同樣的問題?

for循環的語法僅精確地做到這一點,即遍歷該對象的鍵值

所以語法

for(var key in obj) 

將提供該對象的鍵,即屬性。 為了訪問對象值,您需要在此for循環中使用obj [key]。

獲取您創建的數組的值的另一種方法是:

playerPool.forEach(function(player) {
   //Over here you get each player in the array
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM