从父对象继承将执行其父构造函数?

时间:2013-04-21 07:19:05

标签: javascript

全部,在经典继承语言中。例如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?感谢。

1 个答案:

答案 0 :(得分: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个对象就不会在x构造函数中定义yShape属性。

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