62

次のコードがあるとします。

[Test.js file]:
class Test {
    ...
    public static aStaticFunction():void {
          ...

           this.aMemberFunction(); // <- Issue #1.
    }

    private aMemberFunction():void {
          ...

          this.aStaticFunction(); // <- Issue #2.
    }
}

[Another.js file]:
class Another {
    ...

    private anotherMemberFunction():void {
          Test.aStaticFunction(); // <- Issue #3.
    }
}

Issue #x.(3) 対処したい問題については、コメントを参照してください。

これまでにいくつかの構成で遊んでいますが、まだすべてを理解していません。

3 つの場所でこのメソッドにアクセスする方法を理解するのを手伝ってくれませんか?

ありがとう。

4

3 に答える 3

4

thisインスタンスに関連しているのに対し、staticメンバーはインスタンスから独立しています。したがって、静的メンバー内のインスタンスのメンバーにアクセスする場合は、それを渡す必要があります。ただし、その場合、そもそも静的メンバーを持つ理由がわかりません。2つの機能が必要だと思います。1 つは静的で、もう 1 つは非静的です。それは2つの異なることをするので、:

class Test {

    public  notaStaticFunction():void {
           this.aMemberFunction(); // <- Issue #1.
    }

    public static aStaticFunction():void {

    }

    private aMemberFunction():void {
          this.notaStaticFunction(); // <- Issue #2.
    }
}

class Another {
    private anotherMemberFunction():void {
          Test.aStaticFunction(); // <- Issue #3.
    }
}

つまり、静的プロパティを使用して、静的関数とメンバー関数の間でプロパティを共有できます。

于 2013-09-01T03:02:49.797 に答える
-21

Class.staticMethod() のようなクラス名を使用しないでください。これを使用してください。

this.constructor.staticMethod()

静的メソッドの継承を維持する

編集: コメントで述べたように、typescript はサポートしていませんthis.constructorイシュー トラッカーにはオープン チケットがありますが、過去 5 年間あまり進展がありません。

于 2016-05-09T11:13:43.250 に答える