这基本上是两个错误,但它们齐头并进,因为第二个错误会回到第一个错误
未捕获的TypeError:无法设置属性'玩家'未定义的
未捕获的TypeError:无法读取属性' CreatePlayer'未定义的
var TotalPlayers = 0;
Player.Players = [];
Player.CreatePlayer = function (name, Class, rank) {
TotalPlayers ++;
Player.Players[TotalPlayers] = {
name: name,
Class: Class,
rank: rank
};
Player[name] = new Player(name, Class, rank);
};
代码还有更多,但这应该是唯一的 需要的部件
答案 0 :(得分:1)
你在哪里声明Player
是什么?使用您要呈现的代码,您将错过初始化:
var Player = {
Players: []
};
var TotalPlayers = 0;
我刚刚阅读了您发布的代码,Player
在首次使用后定义了,所以至少应该将以下内容移到顶部:
var Player = function(name, Class) {
// ...
};
另一种选择是使用函数语句声明它:
function Player(name, Class) { ... };
这将给你相同的结果,因为首先评估javascript函数,名称将始终可用。阅读有关Function Declarations vs. Function Expressions的更多信息,您可能会受益匪浅。
答案 1 :(得分:1)
尝试在var Player = {}
var TotalPlayers = 0;
另外,不是计算总玩家,你可以简单地将它们推到阵列:
Player.Players.push({
name: name,
Class: Class,
rank: rank
});