【Node.js24.x】Object::getOwnPropertyNames()メソッドの使い方
getOwnPropertyNamesメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
getOwnPropertyNamesメソッドは、指定されたオブジェクト自身が持つすべてのプロパティ名(文字列)を配列として取得するメソッドです。このメソッドは、対象のオブジェクトが直接定義しているプロパティのみを対象とし、プロトタイプチェーンを通じて継承されたプロパティは含まれません。また、そのプロパティが列挙可能(enumerable: true)であるかどうかに関わらず、すべての文字列プロパティ名を含みます。ただし、Symbol型のプロパティ名は含まれません。
このメソッドは、引数としてプロパティ名を調べたいオブジェクトを受け取ります。そして、そのオブジェクトの所有する文字列プロパティ名を要素とする新しい文字列の配列を返します。例えば、オブジェクトの構造を詳細に把握したい場合や、非列挙可能なプロパティを含めてすべてのプロパティ名を一覧したい場合に非常に役立ちます。
JavaScriptのオブジェクトは、目に見えない形で多くのプロパティを持つことがありますが、getOwnPropertyNamesメソッドを使えば、それら隠れたプロパティ名も含めて確認できます。Object.keys()メソッドが列挙可能な文字列プロパティのみを返すのに対し、Object.getOwnPropertyNamesは列挙可能かどうかに関わらず、すべての文字列プロパティ名を返します。Symbol型のプロパティ名を取得したい場合は、Object.getOwnPropertySymbols()メソッドを使用します。これらのメソッドを使い分けることで、オブジェクトのプロパティを多角的に調べることが可能です。
構文(syntax)
1const obj = { 2 a: 1, 3 b: 2, 4 '3': 3, 5 [Symbol('c')]: 4 6}; 7Object.defineProperty(obj, 'd', { 8 value: 5, 9 enumerable: false 10}); 11 12const ownPropertyNames = Object.getOwnPropertyNames(obj); 13console.log(ownPropertyNames); 14// 期待される出力例: [ '3', 'a', 'b', 'd' ] (順序は実装依存であり、数値キーは通常最初に列挙される)
引数(parameters)
obj
- obj: object: プロパティ名を取得したいオブジェクト
戻り値(return)
string[]
指定されたオブジェクトが直接持つ、列挙可能なプロパティ名と列挙不可能なプロパティ名の両方を含む文字列の配列を返します。