【JSリファレンス】Object.getOwnPropertyNames()

更新日:2024/06/14

Object.getOwnPropertyNames()Objectコンストラクターのメソッドです。
オブジェクトが所有するプロパティの名前を、一括で取得します。

対象となるプロパティは、オブジェクトが直接所有するプロパティです。
シンボルおよび、プロトタイプ上のプロパティは対象外です。

 

■構文

Object.getOwnPropertyNames ( O )
  1. 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()を使用すると効率的です。

 

関連ページ

更新日:2024/06/14

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。