2

假设我有

function Point(x, y)
{
    this.X = x;
    this.Y = y;
}

我想要一堂 Point2 课。使用这个这个我想出了这个代码:

function Point2(x, y)
{
    this.X = x; // <-
    this.Y = y; // <-
}

Point2.prototype = new Point();
Point2.prototype.constructor = Point;

但是,如果我有许多变量或许多继承,我不想一直重复属性的分配(请参阅带有 的行<-。如果我这样写,就像它在第二个链接中所说的那样:

Point2.call(this);

,我收到一个错误:超过了最大调用堆栈大小,因为它调用了自己,这从一开始就对我来说很可疑。

那么,有没有办法用相同的传入值调用父构造函数,而不是重复整个代码?

4

1 回答 1

4

您需要调用构造函数,而不是您自己的构造函数:

Point.call(this, x, y);

如果参数总是相同的,你也可以写Point.apply(this, arguments);

于 2013-08-19T20:27:22.667 回答