JavaScriptでオブジェクトのすべてのメソッドを一覧表示する方法

JavaScriptオブジェクトメソッドを使用して配列を取得する方法をご覧ください

使用できますObject.getOwnPropertyNames()オブジェクトにリンクされているすべてのプロパティ名を取得する関数。

次に、結果の配列をフィルタリングして、関数の場合にのみそのプロパティ名を含めることができます。

を使用して、それが関数であるかどうかを判断しますtypeofその上に。

たとえば、必要なことを実行するためのユーティリティ関数を作成する方法を次に示します。

getMethods = (obj) => Object.getOwnPropertyNames(obj).filter(item => typeof obj[item] === 'function')

これは、その特定のオブジェクトで定義されたメソッドのみをリストし、プロトタイプチェーンで定義されたメソッドはリストしません。

そのためには、少し異なるルートを取る必要があります。最初にプロトタイプチェーンを反復する必要があり、すべてのプロパティを配列にリストします。次に、各プロパティが関数であるかどうかを確認します。

プロトタイプチェーンをナビゲートするときにメソッドが重複しないようにする簡単な方法(constructorこれは常に存在します)、値が一意であることを確認するSetデータ構造を使用します。

const getMethods = (obj) => {
  let properties = new Set()
  let currentObj = obj
  do {
    Object.getOwnPropertyNames(currentObj).map(item => properties.add(item))
  } while ((currentObj = Object.getPrototypeOf(currentObj)))
  return [...properties.keys()].filter(item => typeof obj[item] === 'function')
}

使用例:

getMethods("")
getMethods(new String('test'))
getMethods({})
getMethods(Date.prototype)

私の無料ダウンロードJavaScriptビギナーズハンドブック


その他のjsチュートリアル: