Object.getOwnPropertyDescriptor()

与えられたオブジェクト自身のプロパティ (すなわちオブジェクトが直接提供するプロパティであり、オブジェクトのプロトタイプチェインを伝って提供されるプロパティではありません) の、プロパティディスクリプタを返します。

構文

Object.getOwnPropertyDescriptor(obj, prop)

引数

obj
プロパティの確認を行うオブジェクトです。
prop
定義を取り出したいプロパティの名前です。

説明

このメソッドで、プロパティの正確な定義を確認することができます。JavaScript のプロパティは、文字列値の名前とプロパティディスクリプタで成り立ちます。プロパティディスクリプタは、以下の属性のいくつかを記録したものです:

value
プロパティに関連づけられた値です (データディスクリプタのみ)。
writable
true である場合、プロパティに関連づけられた値は変更することができます (データディスクリプタのみ)。
get
プロパティの getter として提供する関数、あるいは getter がない場合は undefined です (アクセサディスクリプタのみ)。
set
プロパティの setter として提供する関数、あるいは setter がない場合は undefined です (アクセサディスクリプタのみ)。
configurable
true である場合、この種のディスクリプタを変更することや、対応するオブジェクトからプロパティを削除することができます。
enumerable
true である場合、このプロパティは対応するオブジェクトでのプロパティ列挙に現れます。

プロパティディスクリプタの属性に関する詳細情報は、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
基本サポート ? ? ? ? ?

参考情報

ドキュメントのタグと貢献者

 このページの貢献者: teoli, yyss
 最終更新者: teoli,