gpt4 book ai didi

javascript - 在 Object Orient JS 中,我试图动态地将一个对象添加到数组中

转载 作者:行者123 更新时间:2023-11-30 12:48:05 27 4
gpt4 key购买 nike

下面的代码是一个非常简单的游戏。我在尝试着动态地将玩家对象添加到玩家数组中。基本上添加这个... {playerName:'Ziggy', playerId:0},进入这个... this.Players = [];

代码相当简单且不言自明。在玩家数组中硬编码的玩家是就在那里帮我解决问题。

var BobsGame = function(){
this.Players = [
{playerName:'Ziggy', playerId:0},
{playerName:'Mark', playerId:1}];
}

var Player = function(name, id){
this.playerName = name;
this.playerId = id;
}

BobsGame.prototype.addPlayer = function(Player, id){
this.playerName = Player;
this.playerId = id;
this.Players.push(this.playerName, this.playerId);
//alert('Player ' + name + ' with an id of ' + i + 'has been created');
}

var myGame = new BobsGame();

$('#addPlayer').click(function(){
id = myGame.Players.length;
name = $('#addPlayerName').val();
newPlayer = new Player(name, id);
myGame.addPlayer(newPlayer, id);
alert(JSON.stringify(myGame.Players, null, 4));
})

我猜问题出在 AddPlayer 函数中?我在上面的内容上尝试了几种差异变体,但没有用。谢谢!

最佳答案

代替 myGame.addPlayer(newPlayer, id); 只需执行 myGame.addPlayer(newPlayer);

那么addPlayer函数只需要:

BobsGame.prototype.addPlayer = function(Player){
this.Players.push(Player);
}

然后您实际上是将该对象放入数组中,您可以使用它来获取名称/ID。

除非出于某种原因,您只需要姓名和 ID,在这种情况下:

myGame.addPlayer(newPlayer); //No need to pass the id as well, as it's in the newPlayer object

BobsGame.prototype.addPlayer = function(Player){
this.Players.push({name:Player.playerName,id:Player.playerId});
// or - this.Players.push([Player.playerName,Player.playerId]);
}

为简单起见,我将 Player 对象的属性更改为 nameid 以简化引用。这样你就可以做 player.name 而不是 player.playerName

关于javascript - 在 Object Orient JS 中,我试图动态地将一个对象添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21885729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com