2017-12-19 14 views
-2

クラスのプロパティをインスタンス化せずにリストする方法を教えてください。クラスのプロパティをインスタンス化せずに列挙する

例:の

class User { 
    constructor({ id_user, first_name }) { 
    this.props = { 
     id_user, 
     first_name 
    } 
    } 
} 

// Obviously won't work but you get the point 
console.log(User.props) // should log id_user, first_name 
+4

できません。これらのプロパティは、 'constructor'が呼び出されるまで構築されません。 –

+0

奇妙な - 少なくとも彼らの名前を取得する方法があると思っていたでしょう –

+0

静的で関数として宣言する必要があります –

答えて

1

実際には、そのクラスのオブジェクトをインスタンス化せずにこれを行う正当な方法はありません。

あなたができることは、User.toString()でこのクラスを記述するコードである実際の文字列を取得してそこから正規表現で作業することです。

+0

'toString()'メソッドは私が考えていたものですが、その時点ではうんざりです。 –

+1

他の方法はありません。インスタンスを持たずに、インスタンスプロパティにアクセスしたい(これはサンプルが示しているもので、静的プロパティやプロトタイププロパティではありません)。これを行うにはかなりの方法はありません、あなたはこの上に血を流さなければなりません –

1

ソート。

どれゲッター、セッター、および方法はそうのように列挙することができます。

class Foo { 
    constructor() {} 
    get bar() { return 3; } 
    baz (val) { return val + this.bar } 
} 

Object.getOwnPropertyDescriptors(Foo.prototype); // lists constructor, bar, baz 

しかし、あなたは、コンストラクタのプロパティを割り当てている方法、ありません。

関連する問題