无法设置/读取未定义的属性

时间:2015-02-24 07:43:03

标签: javascript arrays function

这基本上是两个错误,但它们齐头并进,因为第二个错误会回到第一个错误

未捕获的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);
};

代码还有更多,但这应该是唯一的 需要的部件

2 个答案:

答案 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
    });