From 28b7c67ec1bb5e4aa17bfaab5aacb3a28a649118 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 14 Sep 2021 10:58:47 +0900 Subject: Global_Objects/Object/getOwnPropertyDescriptor を更新 (#2347) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Markdownに変換 - 2021/07/21 時点の英語版に同期 --- .../object/getownpropertydescriptor/index.html | 147 --------------------- .../object/getownpropertydescriptor/index.md | 131 ++++++++++++++++++ 2 files changed, 131 insertions(+), 147 deletions(-) delete mode 100644 files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.md (limited to 'files/ja') 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 ---- -
{{JSRef}}
- -

Object.getOwnPropertyDescriptor() メソッドは、与えられたオブジェクトの特定のプロパティ (すなわち、あるオブジェクトの直接の表現であり、オブジェクトのプロトタイプチェーン内のものではない) の構成を記述するオブジェクトを返します。返されるオブジェクトは変更可能ですが、変更しても元のプロパティの構成には影響を与えません。

- -
{{EmbedInteractiveExample("pages/js/object-getownpropertydescriptor.html")}}
- - - -

構文

- -
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 の使用

- -
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
-// }
-
- -

オブジェクト以外の型変換

- -

ECMAScript 5 では、このメソッドへの最初の引数がオブジェクトでない (プリミティブである) 場合は、 {{jsxref("TypeError")}} が発生します。 ECMAScript 2015 では、最初の引数がオブジェクトでなくても、最初に強制的にオブジェクトに変換します。

- -
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
-// }
-
- -

仕様書

- - - - - - - - - - - - -
仕様書
{{SpecName('ESDraft', '#sec-object.getownpropertydescriptor', 'Object.getOwnPropertyDescriptor')}}
- -

ブラウザーの互換性

- -

{{Compat("javascript.builtins.Object.getOwnPropertyDescriptor")}}

- -

関連情報

- - 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 +// } +``` + +

オブジェクト以外の型変換

+ +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()")}} -- cgit v1.2.3-54-g00ecf