全部,在经典继承语言中。例如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
?感谢。
答案 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
构造函数中定义y
和Shape
属性。
有关详细信息,请阅读以下答案:https://stackoverflow.com/a/15497685/783743