如何在构造函数中创建数组?

时间:2012-11-06 17:25:43

标签: javascript

我想在创建新实例后创建一个新数组作为对象的属性。但是我在Chrome中遇到以下错误:“未捕获的TypeError:无法调用未定义的方法'push'”。玩家似乎不为人知。但为什么?

function Team(name) {
    this.Name = name;
    this.Players = new Array();
}

Team.prototype.AddPlayer = new function (player) {
    this.Players.push(player); //error
}

2 个答案:

答案 0 :(得分:2)

只需删除此行中的“新”

即可
Team.prototype.AddPlayer = function (player) {

答案 1 :(得分:0)

您的代码是正确的,但您需要确保使用Team制作新的new实例。

var t = new Team("foo");
t.AddPlayer("bar");

糟糕,代码中有一个错误。从new作业中的function之前移除.prototype

function Team(name) {
    this.Name = name;
    this.Players = new Array();
}

Team.prototype.AddPlayer = /*new*/ function (player) {
    this.Players.push(player);
}

因为你在函数之前有new,所以你实际上是使用匿名函数作为构造函数,这意味着它被调用

要明确,new 不会创建新函数,除非它放在Function构造函数之前。