我正在创建一个多人问答游戏。我首先创建一个构造函数来存储玩家的ID和每个问题的答案(每个字母的字母一个问题): 我已将所有内容置于一个for循环中,该循环创建了与用户输入所说的一样多的新player(obj)。然后,我对问题有不同的职能。我在弄清楚如何将对象播放器的每个实例传递给函数时遇到了麻烦。因此,假设有四个播放器,我想将播放器1的players.id传递给该函数,但我不知道该如何处理。 此刻我正在做的是: 这是一个片段: 但这只会返回: 那是我做错的另一件事:覆盖播放器_id。因此,我想这里的问题是我无法弄清楚如何管理对象的新实例。 任何帮助或提示将不胜感激。 答案 0 :(得分:1) 问题在于您对 或者,如果您希望一次将所有个玩家传递给 代码还有其他一些问题,以及您可能会考虑更改的其他事项: 您正在使用字符串 但是,您不需要 在JavaScript中,带有构造函数*(用function players(_id, a , b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) {
this._id = _id;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
this.g = g;
this.h = h;
this.i = i;
... etc.
function createPlayers(playersTotal) {
numPlayers = playersTotal;
var num = "1"
for (var i = 0; i < numPlayers; i++) {
var player = new players("Jugador " + num++);
}
questions(player);
}
function questions(obj) {
console.log(obj);
}
function players(_id, a , b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) {
this._id = _id;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
this.g = g;
this.h = h;
this.i = i;
}
function createPlayers(playersTotal) {
numPlayers = playersTotal;
var num = "1"
for (var i = 0; i < numPlayers; i++) {
var player = new players("Jugador " + num++);
}
questions(player);
}
function questions(obj) {
console.log(obj);
}
createPlayers(10);
players {_id: "Jugador 4", a: undefined, b: undefined, c: undefined, d: undefined, …}
1 个答案:
questions
的呼叫位于创建玩家的循环的外部中。因此,您将在循环中反复覆盖player
,然后仅使用最后一个。如果您想与每个玩家通话,请将通话置于questions
内部中:function players(_id, a , b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) {
this._id = _id;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
this.g = g;
this.h = h;
this.i = i;
}
function createPlayers(playersTotal) {
numPlayers = playersTotal;
var num = "1"
for (var i = 0; i < numPlayers; i++) {
var player = new players("Jugador " + num++);
questions(player);
}
}
function questions(obj) {
console.log(obj);
}
createPlayers(10);
questions
,则要创建一个玩家数组,然后将该数组传递给questions
:</
function players(_id, a , b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) {
this._id = _id;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
this.g = g;
this.h = h;
this.i = i;
}
function createPlayers(playersTotal) {
numPlayers = playersTotal;
var num = "1"
var playerList = []; // *** Create the array
for (var i = 0; i < numPlayers; i++) {
var player = new players("Jugador " + num++);
playerList.push(player); // *** Put this player in it
}
questions(playerList); // *** Pass the array to the function
}
function questions(obj) {
console.log(obj);
}
createPlayers(10);
从未声明
numPlayers
。在宽松模式(您似乎正在使用)下,这可能会使您的代码成为我称为隐式全球性恐怖的猎物,从而创建了一个全局 {{1} }变数(没有一个限于numPlayers
)。确保声明您的变量。createPlayers
初始化num
,然后在其上使用"1"
,它将转换为数字。而是使用数字(++
)对其进行初始化,以便保持一致。var num = 1;
;您已经有num
。您可以执行i
,甚至可以进行循环new players(i + 1);
并使用for (i = 1; i <= numPlayers; ++i)
。new players(i)
调用的函数)的压倒性约定是:
new
,而不是Players
;和players
,而不是Player
。