2009-08-24 2 views
6

私はそこに多くのOOのjavascriptの質問があることを知っています。私は多くのリソースを読んでいます....しかし、これまでのところ私の最も長い風が吹いた学習曲線です!オブジェクト指向のJavaScript - クラス内のクラスを定義するには? C#の例から

私は古典的に残念に訓練を受けていないよ、それゆえ私はC#で、私はacheiveしたいものの一例を君たちを表示する必要があります。

私はあなたが助けてくれることを願っています!私は上記のC#の例のプライベート/パブリック&の命名規則については本当に心配していないです

public class Engine 
{ 
    public int EngineSize; 

    public Engine() 
    { 
    } 
} 
public class Car 
{ 
    public Engine engine; 

    public Car() 
    { 
     engine = new Engine(); 
    } 
} 

男。

私が知りたいすべてがJavaScriptでこの構造を複製する方法ですか?

ありがとうございます!

+0

は、これはC#のことになっていますか?パブリッククラスの後の括弧はなんですか? –

答えて

15
function Engine(size) { 
    var privateVar; 

    function privateMethod() { 
     //... 
    } 

    this.publicMethod = function() { 
     // with access to private variables and methods 
    }; 

    this.engineSize = size; // public 'field' 
} 

function Car() { // generic car 
    this.engine = new Engine(); 
} 

function BMW1800() { 
    this.engine = new Engine(1800); 
} 

BMW1800.prototype = new Car(); // inherit from Car 


var myCar = new BMW1800(); 
+1

外部からアクセスできないプライベートネームスペースを提供するためにjavascript機能を使用しているので、私はここで他の例よりもこの方が好きです。私も車で同じことを示していただろうが、少なくともあなたのprivateVarは情報隠れを示している。 – PanCrit

3

だからあなたは本当にただ一つのオブジェクトが他のを含めることができる方法を知りたいですか?あなたは新しい車のインスタンスを作成しますとき

function Engine() 
{ 
    this.EngineSize=1600; 
} 

function Car() 
{ 
    this.engine=new Engine(); 
} 

var myCar=new Car(); 
0
function Engine(){ // this is constructor. Empty since Engine do nothing. 
} 
Engine.prototype.EngineSize=null; // this is public property 

function Car(){ // this is Car constructor. It initializes Engine instance and stores it in Engine public property 
    this.Engine =new Engine(); 
} 

Car.prototype.Engine =null; 

:ここにあなたのサンプルの非常に単純な変換があります。 Car constructorは、Engineの新しいインスタンスを作成し、CarインスタンスのEngineプロパティに割り当てます。

関連する問題