0

创建新实例后,我想创建一个新数组作为对象的属性。但我在 Chrome 中收到以下错误:“Uncaught TypeError: Cannot call method 'push' of undefined”。玩家似乎不为人知。但为什么?

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

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

2 回答 2

2

只需删除此行中的“新”

Team.prototype.AddPlayer = function (player) {
于 2012-11-06T17:30:19.520 回答
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

于 2012-11-06T17:28:56.350 回答