2017-11-11 12 views
0

私はJSライブラリを開発しています。インスタンスではなくクラスから非静的メソッドを取得

ユーザーはクラスの参照(インスタンスではありません)を工場のオブジェクトの1つに渡します。今、私はこのクラスが特定のインターフェイスを実装していることを確認したい。

私はインスタンスを持っていましたが、インターフェイスのメソッドが含まれているかどうかを簡単に確認できましたが、クラスを持ち、インスタンス化の知識はありません。クラスが必要なメソッドを実装しているかどうかを(実行時に)チェックする方法はまだありますか?

現在、私はクラスのインスタンスを渡すように強制していますが、これはクラスが必要なのでやや面倒です。

+2

'typeof SomeClass.prototype.someMethod === 'function''。もちろん、メソッドはプロトタイプ上で実際に定義され、コンストラクタ内部では作成されません。 –

+0

@FelixKlingまさに私が探していたもの!ありがとう! – HyperZ

答えて

0

クラスは、多かれ少なかれコンストラクタ関数の文法上の砂糖です。したがって、クラスメソッドは、コンストラクタのプロパティのprototypeのプロパティです。だから、メソッドが実際には「クラスメソッド」と定義し、コンストラクタ内に作成されていない場合にのみ動作する。もちろん、

typeof SomeClass.prototype.someMethod === 'function' 

を行うことができます。

関連する問題