与えられたオブジェクト自身のプロパティ (すなわちオブジェクトが直接提供するプロパティであり、オブジェクトのプロトタイプチェインを伝って提供されるプロパティではありません) の、プロパティディスクリプタを返します。
構文
Object.getOwnPropertyDescriptor(obj, prop)
引数
obj- プロパティの確認を行うオブジェクトです。
prop- 定義を取り出したいプロパティの名前です。
説明
このメソッドで、プロパティの正確な定義を確認することができます。JavaScript のプロパティは、文字列値の名前とプロパティディスクリプタで成り立ちます。プロパティディスクリプタは、以下の属性のいくつかを記録したものです:
value- プロパティに関連づけられた値です (データディスクリプタのみ)。
writabletrueである場合、プロパティに関連づけられた値は変更することができます (データディスクリプタのみ)。get- プロパティの getter として提供する関数、あるいは getter がない場合は
undefinedです (アクセサディスクリプタのみ)。 set- プロパティの setter として提供する関数、あるいは setter がない場合は
undefinedです (アクセサディスクリプタのみ)。 configurabletrueである場合、この種のディスクリプタを変更することや、対応するオブジェクトからプロパティを削除することができます。enumerabletrueである場合、このプロパティは対応するオブジェクトでのプロパティ列挙に現れます。
プロパティディスクリプタの属性に関する詳細情報は、Object.defineProperty の説明をご覧ください。
例
var o, d;
o = { get foo() { return 17; } };
d = Object.getOwnPropertyDescriptor(o, "foo");
// d is { configurable: true, enumerable: true, get: /*the getter function*/, set: undefined }
o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, "bar");
// d is { 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 is { value: 8675309, writable: false, enumerable: false, configurable: false }
ブラウザの互換性
Kangax's compat table に基づきます。
| 機能 | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | 4 (2.0) | 5 | 8 | 12 alpha | 5 |
| 機能 | Firefox Mobile (Gecko) | Android | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| 基本サポート | ? | ? | ? | ? | ? |