diff options
2 files changed, 131 insertions, 147 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html b/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html deleted file mode 100644 index 0d8e99edee..0000000000 --- a/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Object.getOwnPropertyDescriptor() -slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor -tags: - - ECMAScript 5 - - JavaScript - - Method - - Object -translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor ---- -<div>{{JSRef}}</div> - -<p><strong><code>Object.getOwnPropertyDescriptor()</code></strong> メソッドは、与えられたオブジェクトの特定のプロパティ (すなわち、あるオブジェクトの直接の表現であり、オブジェクトのプロトタイプチェーン内のものではない) の構成を記述するオブジェクトを返します。返されるオブジェクトは変更可能ですが、変更しても元のプロパティの構成には影響を与えません。</p> - -<div>{{EmbedInteractiveExample("pages/js/object-getownpropertydescriptor.html")}}</div> - -<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="syntaxbox notranslate">Object.getOwnPropertyDescriptor(<var>obj</var>, <var>prop</var>)</pre> - -<h3 id="Parameters" name="Parameters">引数</h3> - -<dl> - <dt><code><var>obj</var></code></dt> - <dd>プロパティの確認を行うオブジェクトです。</dd> - <dt><code><var>prop</var></code></dt> - <dd>記述子を受け取るプロパティの名前または {{jsxref("Symbol")}} です。</dd> -</dl> - -<h3 id="Return_value" name="Return_value">返値</h3> - -<p>指定されたプロパティがオブジェクトにある場合は、プロパティ記述子で、それ以外の場合は {{jsxref("undefined")}} です。</p> - -<h2 id="Description" name="Description">解説</h2> - -<p>このメソッドで、プロパティの正確な定義を確認することができます。 JavaScript の<dfn>プロパティ</dfn>は、文字列値の名前または {{jsxref("Symbol")}} とプロパティ記述子から成ります。プロパティ記述子およびその属性についての詳細情報は、 {{jsxref("Object.defineProperty()")}} にあります。</p> - -<p><dfn>プロパティ記述子</dfn>は、以下の属性のいくつかを記録したものです。</p> - - - -<dl> - <dt><code>value</code></dt> - <dd>プロパティに関連づけられた値です (データ記述子のみ)。</dd> - <dt><code>writable</code></dt> - <dd><code>true</code> である場合、プロパティに関連づけられた値は変更することができます (データ記述子のみ)。</dd> - <dt><code>get</code></dt> - <dd>プロパティのゲッターとして提供する関数、あるいはゲッターがない場合は <code>undefined</code> です (アクセサ記述子のみ)。</dd> - <dt><code>set</code></dt> - <dd>プロパティのセッターとして提供する関数、あるいはセッターがない場合は <code>undefined</code> です (アクセサ記述子のみ)。</dd> - <dt><code>configurable</code></dt> - <dd><code>true</code> である場合、この種の記述子を変更することや、対応するオブジェクトからプロパティを削除することができます。</dd> - <dt><code>enumerable</code></dt> - <dd><code>true</code> である場合、このプロパティは対応するオブジェクトでのプロパティ列挙に現れます。</dd> -</dl> - -<h2 id="Examples" name="Examples">例</h2> - -<h3 id="Using_Object.getOwnPropertyDescriptor" name="Using_Object.getOwnPropertyDescriptor">Object.getOwnPropertyDescriptor の使用</h3> - -<pre class="brush: js notranslate">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 = { [Symbol.for('baz')]: 73 } -d = Object.getOwnPropertyDescriptor(o, Symbol.for('baz')); -// d is { -// configurable: true, -// enumerable: true, -// value: 73, -// writable: true -// } - -o = {}; -Object.defineProperty(o, 'qux', { - value: 8675309, - writable: false, - enumerable: false -}); -d = Object.getOwnPropertyDescriptor(o, 'qux'); -// d is { -// value: 8675309, -// writable: false, -// enumerable: false, -// configurable: false -// } -</pre> - -<h3 id="Non-object_coercion" name="Non-object_coercion">オブジェクト以外の型変換</h3> - -<p>ECMAScript 5 では、このメソッドへの最初の引数がオブジェクトでない (プリミティブである) 場合は、 {{jsxref("TypeError")}} が発生します。 ECMAScript 2015 では、最初の引数がオブジェクトでなくても、最初に強制的にオブジェクトに変換します。</p> - -<pre class="brush: js notranslate">Object.getOwnPropertyDescriptor('foo', 0); -// TypeError: "foo" is not an object // ES5 code - -Object.getOwnPropertyDescriptor('foo', 0); -// Object returned by ES2015 code: { -// configurable: false, -// enumerable: true, -// value: "f", -// writable: false -// } -</pre> - -<h2 id="Specifications" name="Specifications">仕様書</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-object.getownpropertydescriptor', 'Object.getOwnPropertyDescriptor')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> - -<p>{{Compat("javascript.builtins.Object.getOwnPropertyDescriptor")}}</p> - -<h2 id="See_also" name="See_also">関連情報</h2> - -<ul> - <li>{{jsxref("Object.defineProperty()")}}</li> - <li>{{jsxref("Reflect.getOwnPropertyDescriptor()")}}</li> -</ul> diff --git a/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.md b/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.md new file mode 100644 index 0000000000..ec06355d9a --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.md @@ -0,0 +1,131 @@ +--- +title: Object.getOwnPropertyDescriptor() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +tags: + - ECMAScript 5 + - JavaScript + - Method + - Object +browser-compat: javascript.builtins.Object.getOwnPropertyDescriptor +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +--- +{{JSRef}} + +**`Object.getOwnPropertyDescriptor()`** メソッドは、与えられたオブジェクトの特定のプロパティ (すなわち、あるオブジェクトの直接の表現であり、オブジェクトのプロトタイプチェーン内のものではない) の構成を記述したオブジェクトを返します。返されるオブジェクトは変更可能ですが、変更しても元のプロパティの構成には影響を与えません。 + +{{EmbedInteractiveExample("pages/js/object-getownpropertydescriptor.html")}} + +## 構文 + +```js +Object.getOwnPropertyDescriptor(obj, prop) +``` + +### 引数 + +- `obj` + - : プロパティの確認を行うオブジェクトです。 +- `prop` + - : 記述を受け取るプロパティの名前または {{jsxref("Symbol")}} です。 + +### 返値 + +指定したプロパティがオブジェクトにある場合は、プロパティ記述子で、それ以外の場合は {{jsxref("undefined")}} です。 + +## 解説 + +このメソッドで、プロパティの正確な定義を確認することができます。 JavaScript の*プロパティ*は、文字列値の名前または {{jsxref("Symbol")}} とプロパティ記述子から成ります。プロパティ記述子およびその属性についての詳細情報は、 {{jsxref("Object.defineProperty()")}} にあります。 + +*プロパティ記述子*は、以下の属性のいくつかを記録したものです。 + +- `value` + - : プロパティに関連づけられた値です (データ記述子のみ)。 +- `writable` + - : `true` である場合、プロパティに関連づけられた値は変更することができます (データ記述子のみ)。 +- `get` + - : プロパティのゲッターとして提供する関数、あるいはゲッターがない場合は `undefined` です (アクセサー記述子のみ)。 +- `set` + - : プロパティのセッターとして提供する関数、あるいはセッターがない場合は `undefined` です (アクセサー記述子のみ)。 +- `configurable` + - : `true` である場合、この種の記述子を変更することや、対応するオブジェクトからプロパティを削除することができます。 +- `enumerable` + - : `true` である場合、このプロパティは対応するオブジェクトでのプロパティ列挙に現れます。 + +## 例 + +### Object.getOwnPropertyDescriptor の使用 + +```js +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 = { [Symbol.for('baz')]: 73 } +d = Object.getOwnPropertyDescriptor(o, Symbol.for('baz')); +// d is { +// configurable: true, +// enumerable: true, +// value: 73, +// writable: true +// } + +o = {}; +Object.defineProperty(o, 'qux', { + value: 8675309, + writable: false, + enumerable: false +}); +d = Object.getOwnPropertyDescriptor(o, 'qux'); +// d is { +// value: 8675309, +// writable: false, +// enumerable: false, +// configurable: false +// } +``` + +<h3 id="Non-object_coercion" name="Non-object_coercion">オブジェクト以外の型変換</h3> + +ECMAScript 5 では、このメソッドへの最初の引数がオブジェクトでない (プリミティブである) 場合は、 {{jsxref("TypeError")}} が発生します。 ECMAScript 2015 では、最初の引数がオブジェクトでなくても、最初に強制的にオブジェクトに変換します。 + +```js +Object.getOwnPropertyDescriptor('foo', 0); +// TypeError: "foo" is not an object // ES5 code + +Object.getOwnPropertyDescriptor('foo', 0); +// Object returned by ES2015 code: { +// configurable: false, +// enumerable: true, +// value: "f", +// writable: false +// } +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{jsxref("Object.defineProperty()")}} +- {{jsxref("Reflect.getOwnPropertyDescriptor()")}} |