.getOwnPropertyDescriptor()

与えられたオブジェクト自身のプロパティの、プロパティ記述子(descriptor)を返します。(提供されたオブジェクト上の直接のものが提供され、prototypeチェーンに沿ったものは提供されません。)

文法

Object.getOwnPropertyDescriptor(obj, prop)
引数 説明
obj プロパティを見つけ出す対象となるオブジェクトを指定します。
prop 取得する記述子(description)のプロパティの名前を指定します。
戻り値
  オブジェクト上に存在すれば、与えられたプロパティの記述子が返り、そうでなければundefinedが返ります。

説明

このメソッドは、プロパティの記述子の一部を調べるのに使用することが出来ます。 JavaScriptのプロパティは、文字列値(string-valued)の名前とプロパティ記述子(descriptor)で構成されます。 プロパティ記述子(descriptor)のタイプと、それらの属性の詳細については、 Object.definePropertyを参照してください。

プロパティ記述子(descriptor)は、下記の属性から構成される記述(記録?)になります。

value
プロパティに関連付けられる値です。(データ記述子のみ)
writable
これがtrueである場合にのみ、プロパティに関連付けられた値を変更することが可能です。(データ記述子のみ)
get
プロパティへgetterとして提供される関数です。 getter無しにするには、undefinedを指定します。(アクセサ記述子のみ)
set
プロパティへsetterとして提供される関数です。 setter無しにするには、undefinedを指定します。(アクセサ記述子のみ)
configurable
trueの場合にのみ、このプロパティ記述子のタイプを変更することが可能であり、 また対応するオブジェクトから、このプロパティを削除することが可能です。
enumerable
trueの場合にのみ、対応するオブジェクトのプロパティ列挙中に現れます。

var o, d;

o = { get foo() { return 17; } };
d = Object.getOwnPropertyDescriptor(o, "foo");
// dは、{
          configurable: true,
          enumerable:   true,
          get:          /* 指定したgetter関数 */,
          set:          undefined
        }

o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, "bar");
// d は、{
          configurable: true,
          enumerable:   true,
          value:        42,
          writable:     true
         }

o = {};
Object.defineProperty(o, "baz",
    {
      value: 8675309,
      writable: false,
      enumerable: false
    });
d = Object.getOwnPropertyDescriptor(o, "baz");
// dは、{
          value:        8675309,
          writable:     false,
          enumerable:   false,
          configurable: false
        }

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本 5 4.0 (2) 8 12 alpha 5
モバイル
機能 Android Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本 ? ? ? ? ?

Based on Kangax's compat table.

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。