-1

全部,在经典的继承语言中。例如Java,c#等,确实子类的新实例初始化会导致基类构造函数在子类的构造函数执行之前执行。但我不确定它在 javascript 继承中是否相同。让我们举个例子。说你有如下代码。

function Shape() {
    this.x = 0;
    this.y = 0;
};

如果有一个对象名rect继承自Shape. 假设的构造函数Rectangle看起来像这样。

function Rectangle(){

};
Rectangle.prototype = Object.create(Shape.prototype);
var rect= new Rectangle();

构造函数Shape执行时会执行构造函数Rectangle吗?谢谢。

4

1 回答 1

1

这就是你通常在 JavaScript 中进行继承的方式:

function Shape() {
    this.x = 0;
    this.y = 0;
}

function Rectangle() {
    Shape.call(this);
}

Rectangle.prototype = Object.create(Shape.prototype);

请注意,您是Shape.call(this)从构造函数内部调用的Rectangle。这就像在其他语言中调用基类/超类构造函数一样。如果不这样做,您的Rectangle对象将不会在构造函数中定义xandy属性。Shape

有关更多详细信息,请阅读以下答案:https ://stackoverflow.com/a/15497685/783743

于 2013-04-21T08:15:13.257 回答