Javascriptでの継承。オブジェクトでメソッドを継承しますか?どうすれば結果に到達できますか?

私はJavascriptで継承を行使しようとしています。車から継承されたeCar車両から継承された車。しかし、Car-またはeCar-Objectでメソッド "getInfo()"を使用できないようです。これをブラウザで実行すると、結果は次のようになります。

Manufacture: Siemens

undefined
undefined

私が探しているものは次のとおりです。

Manufacture: Siemens
Manufacture: VW
Manufacture: Tesla

function Vehicle(herst){

    this.manuf = herst;
}

Vehicle.prototype.getInfo = function(){
    return 'Manufacture: '+ this.manuf+'<br>';
}


Car.prototype = Vehicle;
Car.prototype.construtor = Vehicle;
Car.prototype.getInfo = Vehicle;


function Car(){ }

eCar.prototype = Car;
eCar.prototype.construtor = Car;
eCar.prototype.getInfo = Car;

function eCar(){ }


Train = new Vehicle('Siemens');
document.write(Train.getInfo()+"<br>");


Golf = new Car('VW');
document.write(Golf.getInfo()+"<br>");


Tesla = new eCar('Tesla');
document.write(Tesla.getInfo()+"<br>");
ポールS。

あなたは近くにいました、ただいくつかのことを変える必要がありました。

// Vehicle
function Vehicle(herst){
    this.manuf = herst;
}
Vehicle.prototype.getInfo = function () {
    return 'Manufacture: '+ this.manuf+'<br>'; // you really want to return HTML?
};
Vehicle.prototype.construtor = Vehicle;

// Car
function Car(){
    Vehicle.apply(this, arguments); // extends Vehicle
}
Car.prototype = Object.create(Vehicle.prototype); // inherits Vehicle's prototype
Car.prototype.construtor = Car;

// eCar
function eCar(){ // constructors usually start with a capital
    Car.apply(this, arguments); // extends Car
}
eCar.prototype = Object.create(Car.prototype);
eCar.prototype.construtor = eCar;

// use it

var Train = new Vehicle('Siemens'), // variables usually start lower case
    Golf = new Car('VW'),
    Tesla = new eCar('Tesla');

私はObject.create継承を設定することを選択しました。一部の人々はの形式を使用することを好みBar.prototype = new Foo()ますが、これはFoo間違ったタイミングでコンストラクター呼び出すと感じます


これはどのように見えますか?

var foo = new eCar('Foo');
foo instanceof eCar;    // foo has eCar's prototype
                        // eCar was used to construct foo
foo instanceof Car;     // foo inherited Car's prototype via eCar's prototype
                        // at the beginning of eCar, Car was applied to foo
foo instanceof Vehicle; // foo inherited Vehicle's prototype via Car's prototype
                        // at the beginning of Car, Vehicle was applied to foo
/*
    So `foo` has own properties as assigned by Vehicle, then Car, then eCar,
    and it has the prototype from eCar which shadows the prototype from Car
    which again shadows the prototype from Vehicle
*/

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JavaScriptで既存のオブジェクトを継承する新しいオブジェクトを作成するにはどうすればよいですか?

分類Dev

Pythonオブジェクトは、継承スタックの下位にあるメソッドを呼び出すことができますか?

分類Dev

ジェネリックと継承を適切に混合して、望ましい結果を得るにはどうすればよいですか?

分類Dev

multiprocessing.Process(spawnメソッドを使用):どのオブジェクトが継承されますか?

分類Dev

継承されたオブジェクトの流れるようなメソッドを呼び出すときに、順序を無関係にするにはどうすればよいですか?

分類Dev

子クラスで継承されたメソッドをどのように装飾しますか?

分類Dev

reactjs関数オブジェクトで継承を行うにはどうすればよいですか?

分類Dev

defaultdictを継承し、そのコピーメソッドをサブクラスメソッドで使用するにはどうすればよいですか?

分類Dev

オブジェクト指向、外部メソッドを呼び出すことができないjavascriptの継承

分類Dev

子パラメータセットは別のオブジェクトから継承できますか?

分類Dev

nhibernateが継承されたオブジェクトからの結果を結合しないようにするにはどうすればよいですか?

分類Dev

QT Creatorで継承されたクラスのオブジェクトとしてQWidgetを宣言するにはどうすればよいですか?

分類Dev

この例では、同じインターフェイスから継承するさまざまなオブジェクトをジェネリック型で1つの変数に格納するにはどうすればよいですか?

分類Dev

JSONから継承したJavaScriptオブジェクトを取得するにはどうすればよいですか?

分類Dev

Doctrine2単一テーブル継承リポジトリから混合オブジェクトタイプの結果セットを取得するにはどうすればよいですか?

分類Dev

オブジェクトから関数パラメータの継承型を使用できますか?

分類Dev

オブジェクトは、それ自体のオブジェクトの配列を保持できます。しかし、これは継承とどのように連携しますか?

分類Dev

Java:継承されたクラスからオブジェクトを取得するgetterメソッドを作成するにはどうすればよいですか?

分類Dev

Java:継承されたクラスからオブジェクトを取得するgetterメソッドを作成するにはどうすればよいですか?

分類Dev

継承されたメソッドに異なるサブクラス値を反映できますか?

分類Dev

継承を使用してコードの重複を排除して、オブジェクトのクリックコマンドを使用できますか?

分類Dev

Scalaで同じ特性を継承する2つのオブジェクトでvalはどのように初期化されますか?

分類Dev

オブジェクト指向パラダイムのメソッドは、継承するクラスで同じシグネチャを持つメソッドによってオーバーライドできます。ただし、変数はできません。どうして?

分類Dev

golangの継承されたメソッドでオブジェクトにアクセスできるようにする

分類Dev

継承されたウィジェットを使用するときにブロックを破棄するにはどうすればよいですか?

分類Dev

継承時にスーパークラスのオブジェクトをベースクラスで継承しますか?

分類Dev

initメソッドの継承を禁止するにはどうすればよいですか?

分類Dev

多重継承のオブジェクトで使用する変数を指定するにはどうすればよいですか?

分類Dev

C ++の継承されたクラスで通常のメソッドを静的メソッドに変更するにはどうすればよいですか?

Related 関連記事

  1. 1

    JavaScriptで既存のオブジェクトを継承する新しいオブジェクトを作成するにはどうすればよいですか?

  2. 2

    Pythonオブジェクトは、継承スタックの下位にあるメソッドを呼び出すことができますか?

  3. 3

    ジェネリックと継承を適切に混合して、望ましい結果を得るにはどうすればよいですか?

  4. 4

    multiprocessing.Process(spawnメソッドを使用):どのオブジェクトが継承されますか?

  5. 5

    継承されたオブジェクトの流れるようなメソッドを呼び出すときに、順序を無関係にするにはどうすればよいですか?

  6. 6

    子クラスで継承されたメソッドをどのように装飾しますか?

  7. 7

    reactjs関数オブジェクトで継承を行うにはどうすればよいですか?

  8. 8

    defaultdictを継承し、そのコピーメソッドをサブクラスメソッドで使用するにはどうすればよいですか?

  9. 9

    オブジェクト指向、外部メソッドを呼び出すことができないjavascriptの継承

  10. 10

    子パラメータセットは別のオブジェクトから継承できますか?

  11. 11

    nhibernateが継承されたオブジェクトからの結果を結合しないようにするにはどうすればよいですか?

  12. 12

    QT Creatorで継承されたクラスのオブジェクトとしてQWidgetを宣言するにはどうすればよいですか?

  13. 13

    この例では、同じインターフェイスから継承するさまざまなオブジェクトをジェネリック型で1つの変数に格納するにはどうすればよいですか?

  14. 14

    JSONから継承したJavaScriptオブジェクトを取得するにはどうすればよいですか?

  15. 15

    Doctrine2単一テーブル継承リポジトリから混合オブジェクトタイプの結果セットを取得するにはどうすればよいですか?

  16. 16

    オブジェクトから関数パラメータの継承型を使用できますか?

  17. 17

    オブジェクトは、それ自体のオブジェクトの配列を保持できます。しかし、これは継承とどのように連携しますか?

  18. 18

    Java:継承されたクラスからオブジェクトを取得するgetterメソッドを作成するにはどうすればよいですか?

  19. 19

    Java:継承されたクラスからオブジェクトを取得するgetterメソッドを作成するにはどうすればよいですか?

  20. 20

    継承されたメソッドに異なるサブクラス値を反映できますか?

  21. 21

    継承を使用してコードの重複を排除して、オブジェクトのクリックコマンドを使用できますか?

  22. 22

    Scalaで同じ特性を継承する2つのオブジェクトでvalはどのように初期化されますか?

  23. 23

    オブジェクト指向パラダイムのメソッドは、継承するクラスで同じシグネチャを持つメソッドによってオーバーライドできます。ただし、変数はできません。どうして?

  24. 24

    golangの継承されたメソッドでオブジェクトにアクセスできるようにする

  25. 25

    継承されたウィジェットを使用するときにブロックを破棄するにはどうすればよいですか?

  26. 26

    継承時にスーパークラスのオブジェクトをベースクラスで継承しますか?

  27. 27

    initメソッドの継承を禁止するにはどうすればよいですか?

  28. 28

    多重継承のオブジェクトで使用する変数を指定するにはどうすればよいですか?

  29. 29

    C ++の継承されたクラスで通常のメソッドを静的メソッドに変更するにはどうすればよいですか?

ホットタグ

アーカイブ