无法将对象推送到数组Javascript中

时间:2011-11-13 03:00:51

标签: javascript arrays object

我正在建立一个游戏,对于我的玩家,我有一个玩家类。这个类定义了他们的名字,xpos,ypos等等。在我的主游戏循环中,我必须迭代所有当前玩家(它是多人游戏)并更新/绘制它们。

问题是,我不知道如何将玩家存储在游戏类中。我尝试在游戏课中这样做:

this.players = [];

然后:

game.players.push(new player(name));

但是我收到了这个错误:

Uncaught TypeError: object is not a function

我一直认为我可以将对象作为数组元素,但显然不是。

有人可以建议更好的方法来做我想做的事吗?

4 个答案:

答案 0 :(得分:0)

您是否定义了播放器构造函数?

需要遵循以下格式的代码:

    function player(name) {
        this.name = name;

        // Initialise other members here.
    }

答案 1 :(得分:0)

假设你有这样的游戏和玩家类,

var Game = function() { this.players = []; }
var Player = function(name) { this.name = name; }

你可以做到

var game = new Game();
game.players.push(new Player("test"));

答案 2 :(得分:0)

this的上下文可能会改变为您不期望的内容。

在课堂上,请务必检查this的正确值。您可能需要使用闭包来确保您正在谈论您的课程。

像这样:

var MyClass = Class.extend({
  myMethod: function() {
    var self = this;
    $('button').click(function({
      //in here, this is different
      //so use self instead
    });
  }
});

答案 3 :(得分:0)

想出来的人。我已经在我的代码中为另一个JS文件中的某个播放器定义了一个变量。对于有此问题的其他人,请检查您是否有类似

的内容
var player = new player();

在你尝试这样做之前。