2016-08-18 4 views
0

親クラスの静的メソッドからサブクラスの静的メソッドを呼び出すにはどうすればよいですか?JavaScriptで静的サブクラスメソッドを呼び出す方法

class A { 

    static foo(){ 
    // call subclass static method bar() 
    } 
} 

class B extends A { 

    static bar(){ 
    // do something 
    } 
} 

B.foo() 

更新

私は、これはAのサブクラスが私のコンテキスト内でシングルトンとして最もよく働いているだろうと私はA.でtemplate method pattern

を使用したいということですしようとした理由静的コンテキストからサブクラスへの参照を得ることができないように見えるので、私は現在、ちょうど同様に動作するAのサブクラスのインスタンスをエクスポートしています。ありがとう。

アップデート2

はい、それは程度に重複した(他の質問は、サブクラス化を伴わない)です。参照は、静的コンテキストからでもthisです。だから、これは動作します:

static foo(){ 
    this.bar(); 
} 
+1

私は、JavaScriptが少し混乱していると思います。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes – Derek

+0

あなたは特定のセクションを指していますか? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Static_methods – hcvst

+0

達成しようとしていることは何ですか?サブクラスから基本クラスに何も宣言していません。したがって、 'B.foo()'は何も返されません。 – Dandy

答えて

0

私はそれはそうと、あなたはすでにあなたがB.fooを行うために必要なものを得るみかん、あなたのニーズに()を少し混乱しています。それで、これはあなたが必要とするものですか?

class A { 

    static foo(){ 
    // call subclass static method bar() 
    // Because it is "static" you reference it by just calling it via 
    // the class w/o instantiating it. 
    B.bar() 

    } 
} 

class B extends A { 

    static bar(){ 
    // do something 
    console.log("I am a static method being called") 
    } 
} 

// because "foo" is static you can call it directly off of 
// the class, like you are doing 
B.foo() 

// or 
var D = new B() 
D.bar() // won't work ERROR 
A.foo() // Works <-- Is this is specifically what you are asking? Or 
     // calling it in the Super class like B.bar(), that is done in static method foo? 

これはあなたの質問ですか?これであなたの質問に答えることができない場合は、私が誤解していることを教えてください。私は答えようとします。ありがとう。

+0

ありがとう@ジェームス。 'B.bar()'を明示的に呼び出すのではなく、 'A'は異なるサブクラスを持つことができるので、' subClassRef.bar() 'のようなものを呼びたいと思います。 – hcvst

関連する問題