-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ないと、オブジェクトにはコンストラクター内で定義されたプロパティxとプロパティがありません。yShape

詳細については、次の回答をお読みください: https://stackoverflow.com/a/15497685/783743

于 2013-04-21T08:15:13.257 に答える