2016-12-21 2 views
-4

最近私はJavaScriptを学び始めました。私はプロジェクト経験はありません。 JavaScriptの上の最近出席インタビュー:どのように継承の概念をjavascriptで実装するのですか?

彼はおよそInheritance 1つの質問を:次のようになりべきである:

私は以下のようなものを二つの方法のインスタンスを作成した場合、私は一つのVehicleと呼ばれる方法で、別のtwo Methods Like one is Two-Wheeler and another one four-wheeler Method.

が必要

var two-wheeler1 = new two-wheeler("Shine","125 kph") ; 

別の例は、以下のようなものである

var four-wheeler1 = new four-wheller("audi","1000kph"); 

私はこれを達成するための方法

four-wheeler1.getWheeles() //it Should print 4 Wheels 

を印刷する場合、私は

two-wheeler1.getWheeles() //it should print 2 wheels 

を印刷する場合。誰か助けてくれればいいですか?

+1

> = https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript – Fefux

+0

[Javascriptでのメソッドのオーバーライド]の可能な複製(http://stackoverflow.com)/questions/15497259/overriding-methods-in-javascript) –

+0

名前には無効です – Icepickle

答えて

1

おそらく、インタビュアーと彼の会社は、現代のJS(ES6、または活字体)でのプログラミングです。もしそうでなければ、あなたはたぶん別の会社にインタビューするべきでしょう。世界の残りの部分では、我々は「オートバイ」または「スクーター」、および4輪車「車」二輪車を呼び出し、ところで

class Vehicle { 
    constructor(brand, kmp) { 
    this.brand = brand; 
    this.kmp = kmp; 
    } 

    getWheels() { return `${this.nWheels} wheels`; } 
} 

class TwoWheeler extends Vehicle { 
    constructor(brand, kmp) { 
    super(brand, kmp); 
    this.nWheels = 2; 
    } 
} 

class FourWheeler extends Vehicle { 
    constructor(brand, kmp) { 
    super(brand, kmp); 
    this.nWheels = 4; 
    } 
} 

:ES6は、クラスと継承関係を定義するための素敵なきれいな構文を提供します。

+0

ありがとうございました。インタビューだけでなく、ES5やVenilaのJavaScriptを使う方法を教えてください。私にとっては大きな助けとなります。私はあなたにリクエストしています。ありがとう! – Siva

0

JSでより良いOOPと継承をスタンドの下に次のコードを確認してください:

function twoWheeler(brand, kmp) { 
    this.brand=brand; 
    this.kmp=kmp; 
    this.getWheeles=function() { 
    return "2 wheels" 
    }; 
    this.getVehicleInfo=function() { 
    return "Brand Name: " + this.brand + " Speed: " + this.kmp + " Type: 2 wheeler." 
    }; 
    } 

function fourWheller(brand, kmp){ 
    this.brand=brand; 
    this.kmp=kmp; 
    this.getWheeles=function() { 
    return "4 wheels" 
    }; 
    this.getVehicleInfo=function() { 
     return "Brand Name: " + this.brand + " Speed: " + this.kmp + " Type: 4 wheeler." 
    }; 
    } 

    fourWheller.fourWheller= new twoWheeler(); 
    fourWheller.prototype.constructor=fourWheller; 

    var twoWheeler1 = new twoWheeler("Shine","125 kph"); 
    var fourWheller1 = new fourWheller("Audi","1000kph"); 

    console.log(twoWheeler1.getWheeles()) 
    console.log(fourWheller1.getWheeles()) 

    console.log(twoWheeler1.getVehicleInfo()) 
    console.log(fourWheller1.getVehicleInfo()) 
+0

私は混乱しています。あなたは四輪車から二輪車を派生していますか?要求された 'Vehicle'クラスはどこですか? 'fourWheeler.fourWheeler =新しいtwoWheeler();は何ですか?自分のクラスのプロトタイプにコンストラクタを設定する必要があるのはなぜですか?自動的に行われます。ところで、それは "wheller"ではなく "wheeler"であり、 "wheeles"ではなく "wheels"です。 –

+0

私はインタビュアーに答えを与えていません。私はOOPと継承についての彼の主なアイデアを教えようとしています。それは私の答えにあります。 – Hanif

+0

@ハニフ、ここではすべての関数のプロパティを書き直しています。だからパフォーマンスは賢明ですか? – Siva

関連する問題