2013-04-21 50 views
-1

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

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

如果有对象名称rectShape继承。假设Rectangle的构造函数看起来像这样。

function Rectangle(){ 

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

会执行构造Rectangle当构造Shape将被执行?谢谢。

+0

[约翰Resig的 - 简单的JavaScript继承(http://ejohn.org/blog/simple-javascript-inheritance/) – 2013-04-21 07:24:54

+0

功能没有构造函数。 – 2013-04-21 07:25:12

+0

在Javascript中没有构造函数的概念,一切都是函数。参考:** www.crockford.com/javascript/ inheritance.html ** – dreamweiver 2013-04-21 07:26:36

回答

1

这是你怎么做,通常在JavaScript内继承:

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

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

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

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

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

+0

谢谢你的好意,很高兴再次见到你。 :)其实我发现我真正想问的是另一个问题。你可以请审查[这里](http://stackoverflow.com/questions/16129365/in-prototype-in​​heritance-program-when-a-property-not-found-in-a-specified-object) – 2013-04-21 08:40:48