我想在创建新实例后创建一个新数组作为对象的属性。但是我在Chrome中遇到以下错误:“未捕获的TypeError:无法调用未定义的方法'push'”。玩家似乎不为人知。但为什么?
function Team(name) {
this.Name = name;
this.Players = new Array();
}
Team.prototype.AddPlayer = new function (player) {
this.Players.push(player); //error
}
答案 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
构造函数之前。