带有变量的构造函数的Javascript继承

时间:2013-08-19 20:22:27

标签: javascript oop object inheritance

假设我有

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

我希望有一个Point2类。使用thisthis我想出了这段代码:

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

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

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

Point2.call(this);

,我收到一个错误:超出了最大调用堆栈大小,因为它调用了自己,从一开始就让我感到怀疑。

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

1 个答案:

答案 0 :(得分:4)

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

Point.call(this, x, y);

如果参数始终相同,您也可以编写Point.apply(this, arguments);