【JSリファレンス】Object.getOwnPropertyNames()
更新日:2024/06/14
Object.getOwnPropertyNames()はObjectコンストラクターのメソッドです。
オブジェクトが所有するプロパティの名前を、一括で取得します。
対象となるプロパティは、オブジェクトが直接所有するプロパティです。
シンボルおよび、プロトタイプ上のプロパティは対象外です。
■構文
Object.getOwnPropertyNames ( O )
- O: 対象オブジェクト
■使用例
const s = Symbol();
const obj = {
prop:200,
text:"hello",
[s]:300
}
console.log( Object.getOwnPropertyNames ( obj ) );
// [ 'prop', 'text' ]
■Object.keysとの相違点
Object.keys()はObject.getOwnPropertyNames()と同様に、オブジェクトが直接所有するシンボル以外のプロパティを取得します。
ただしObject.keys()はEnumerable属性が false のものを除外します。
Object.getOwnPropertyNames()は除外しません。
■備考
オブジェクトが所有するシンボルプロパティを取得する場合は、Object.getOwnPropertySymbols()を使用します。
Object.getOwnPropertyNames()とObject.getOwnPropertySymbols()の二つを呼び出すことで、オブジェクトが直接所有する全てのプロパティを取得できますが、この二つのメソッドは全てのプロパティを取得した後、必要なものを抜き出す処理を行っているため、非効率な面があります。
このようなケースでは、一度の呼び出しで全てのプロパティ名を取得できるReflect.ownKeys()を使用すると効率的です。
関連ページ
●【JavaScript】オブジェクトのプロパティを列挙するいくつかの方法
●【JavaScript】プロトタイプチェーンを含めたプロパティ名一覧を取得する
更新日:2024/06/14
スポンサーリンク
記事の内容について

こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。