假设我有
function Point(x, y)
{
this.X = x;
this.Y = y;
}
我希望有一个Point2类。使用this和this我想出了这段代码:
function Point2(x, y)
{
this.X = x; // <-
this.Y = y; // <-
}
Point2.prototype = new Point();
Point2.prototype.constructor = Point;
但是,如果我有很多变量或许多继承,我不想一直重复属性的分配(参见<-
的行。如果我这样写,就像它说的那样第二个链接:
Point2.call(this);
,我收到一个错误:超出了最大调用堆栈大小,因为它调用了自己,从一开始就让我感到怀疑。
那么,有没有办法用相同的传入值调用父构造函数而不是重复整个代码?
答案 0 :(得分:4)
您需要调用父构造函数,而不是您自己的构造函数:
Point.call(this, x, y);
如果参数始终相同,您也可以编写Point.apply(this, arguments);