オブジェクトのすべてのメソッドを一覧で見たいという時がよくあるのですが、残念ながら現時点ではそのような手法はJavascriptに組み込まれてないようで、自分で実装する必要があります(2024年2月24日時点)。
当記事ではJavascriptでオブジェクトのメソッド一覧を取得する方法について記します。
オブジェクトのメソッド一覧を取得するコード
さっそくですが、オブジェクトのメソッド一覧を取得するコードを共有します。
do-while文で継承元まで含めたプロパティ一覧を取得し、最後にfilterメソッドでコンストラクタを除いたメソッドのみを返す、という流れになります。
const getMethods = ( o, target = o, props = [] ) => {
do {
Reflect.ownKeys( o ).map(item => props.push(item))
} while( (o = Object.getPrototypeOf( o )) && o != Object.prototype )
return props.filter(p => typeof target[p] == 'function' && p != 'constructor')
}
getMethodsの使い方
使い方はシンプルで、オブジェクトを引数に先ほど定義したgetMethodsメソッドを実行するだけです。
クラスインスタンスや標準組み込みオブジェクトにも使用できます。
getMethods({sampleMethod(){}}) // オブジェクトに使用できる
getMethods(new SampleClass()) // クラスインスタンスにも使用できる
getMethods(document) // 標準組み込みオブジェクトにも使用できる
getMethodsの仕様
今回実装したgetMethodsの仕様は下記のようになっています。
・継承元まで含めたすべてのメソッドを配列で返す
・最深層のObject.prototype
のメソッドは取得しない(すべてのオブジェクトが共通で持っているため)
・コンストラクタは除く
・getter/setterは除く
以上、オブジェクトのメソッド一覧を取得する方法でした。
外部サイト様になりますが、TypeScriptの場合は下記が参考になると思います。
TypeScript: オブジェクトのメソッド一覧を取得する関数 getMethods()