2017-09-10 10 views
0

別のjsファイルで呼び出される別の静的関数を含むファイル内のクラスを持っています。同じファイル内の別のヘルパー関数のクラスの静的関数を呼び出す

module.export = class myClass{ 
    static create(){ 
    ... 
    } 
} 

// helpers 
function callCreate(){ 
    .. 
} 

私はcallCreateヘルパー関数でmyClassの静的関数を呼び出したいです。これどうやってするの?

class MyClass { 
 

 
    property() { 
 
    console.log('i am normal member'); 
 
    } 
 

 
    static func() { 
 
    console.log('i am static member'); 
 
    } 
 

 
    static funcThis() { 
 
    console.log('i am static member'); 
 
    console.log(this === MyClass); // true 
 
    this.func(); // will run fine as a static member of a class 
 
    this.property(); // will give error as a normal member of a class 
 
    } 
 

 
} 
 

 
(new MyClass()).property(); 
 

 
MyClass.func(); 
 

 
MyClass.funcThis();

静的メンバーを直接、クラス名によってアクセスされたオブジェクトにリンクされない:クラスの

+0

クラスの静的メンバーは、 'Class.staticVar'のようにアクセスされます。あなたの場合、それは 'myClass.create'になります。 – RaghavGarg

答えて

1

静的メンバは次のようにアクセスされます。また、静的関数内のクラスのメンバーはstaticしか使用できません。

お知らせ:としては、クラスを直接参照する静的関数this内を@FelixKling によって指摘しました。

ヒント:クラス名には常にPascalCaseを使用してください。

+1

* "これが静的関数の中で' this'を使うことができない理由です。 "*これは正しくない。もちろん、 'this'(すべての関数に' this'があります)を使うことができますが、 'MyClass'を参照します。 –

+0

@FelixKling、私はあなたが「*しかしそれは** MyClass *を参照していないでしょう」と言いたいと思います。 – RaghavGarg

+1

いいえ、私は私が言ったことを意味しました。 staticメソッドの中に 'console.log(this === MyClass);'を入れてください。 –

関連する問題