4
class MockFamily implements IFamily {
    static instances: MockFamily[] = [];

    constructor (nodeClass: { new (): Node; }, engine: Engine) {
        MockFamily.instances.push(this);
    }

    /* sniiiiiip */
}

instances上記の例で、実際のクラス名を使用せずにコンストラクター内から静的値にアクセスする方法はありますか?

4

1 に答える 1

8

静的変数は、常にクラス名を通じてアクセスされます。クラス オブジェクトは、プロパティを持つオブジェクトとして機能します。あなたが来ることができる最も近いものはおそらく次のとおりです:

with (MockFamily) {
    instances.push(this);
}

私はそれをお勧めしませんが。

ただし、モジュールは別のものです。実行時には、それらの内容は関数スコープ内の変数であり、内部のほぼどこからでも直接アクセスできます。

module MyModule {
    var instances: IFamily[] = [];

    export class MockFamily implements IFamily {
        constructor (nodeClass: { new (): Node; }, engine: Engine) {
            instances.push(this);
        }

        /* sniiiiiip */
    }
}
于 2012-11-29T07:37:10.830 に答える