recursal/MDN huggingface dataset:
TypedArray.prototype.keys()
===========================

**`keys()`** は `TypedArray` インスタンスのメソッドで、配列内の各インデックスに対するキーを含む新しい配列イテレーターオブジェクトを返します。このメソッドのアルゴリズムは `Array.prototype.keys()` と同じです。

試してみましょう
--------

構文
--


```js
keys()
```

### 引数

なし。

### 返値

新しい配列イテレーターオブジェクトです。

解説
--

詳細については、 `Array.prototype.keys()` をご覧ください。このメソッドは汎用的ではなく、型付き配列インスタンスに対してのみ呼び出すことができます。

例
-

### for...of を使用した反復処理


```js
const arr = new Uint8Array([10, 20, 30, 40, 50]);
const arrKeys = arr.keys();
for (const n of arrKeys) {
  console.log(n);
}
```

### 他の繰り返し処理


```js
const arr = new Uint8Array([10, 20, 30, 40, 50]);
const arrKeys = arr.keys();
console.log(arrKeys.next().value); // 0
console.log(arrKeys.next().value); // 1
console.log(arrKeys.next().value); // 2
console.log(arrKeys.next().value); // 3
console.log(arrKeys.next().value); // 4
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-%typedarray%.prototype.keys |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `TypedArray.prototype.keys` のポリフィル (`core-js`)
* JavaScript の型付き配列
* `TypedArray`
* `TypedArray.prototype.entries()`
* `TypedArray.prototype.values()`
* `TypedArray.prototype[@@iterator]()`
* `Array.prototype.keys()`
* 反復処理プロトコル
TypedArray.prototype.filter()
=============================

**`filter()`** は `TypedArray` インスタンスのメソッドで、指定された関数で実装されているテストに合格した要素だけにフィルタリングされた、指定された型付き配列の一部のコピーを作成します。このメソッドのアルゴリズムは `Array.prototype.filter()` と同じです。

試してみましょう
--------

構文
--


```js
filter(callbackFn)
filter(callbackFn, thisArg)
```

### 引数

`callbackFn`

配列のそれぞれの要素に対して実行する関数です。要素がテストに合格した場合は真値を返し、そうでなければ偽値を返す必要があります。この関数は以下の引数で呼び出されます。

`element`

現在処理されている型付き配列の要素です。

`index`

現在処理されている型付き配列の要素のインデックスです。

`array`

`filter()` が実行されている型付き配列です。


`thisArg` 省略可

`callbackFn` を実行する際に `this` として使用する値。反復処理メソッドを参照してください。

### 返値

テストに合格した要素だけを格納した、指定された型付き配列のコピー。テストに合格する要素がない場合は、空の型付き配列を返します。

解説
--

詳細については、 `Array.prototype.filter()` をご覧ください。このメソッドは汎用的ではなく、型付き配列インスタンスに対してのみ呼び出すことができます。

例
-

### 小さな値をすべて取り除く

次の例では、`filter()` を使って `10` 未満の値を持つ要素をすべて取り除いた型付き配列を生成します。


```js
function isBigEnough(element, index, array) {
  return element >= 10;
}
new Uint8Array([12, 5, 8, 130, 44]).filter(isBigEnough);
// Uint8Array [ 12, 130, 44 ]
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-%typedarray%.prototype.filter |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `TypedArray.prototype.filter` のポリフィル (`core-js`)
* JavaScript の型付き配列ガイド
* `TypedArray`
* `TypedArray.prototype.forEach()`
* `TypedArray.prototype.every()`
* `TypedArray.prototype.map()`
* `TypedArray.prototype.some()`
* `TypedArray.prototype.reduce()`
* `Array.prototype.filter()`
TypedArray.prototype.lastIndexOf()
==================================

**`lastIndexOf()`** は `TypedArray` インスタンスのメソッドで、指定された要素が型付き配列内で見つかった最後の位置のインデックスを返し、存在しなければ -1 を返します。型付き配列は `fromIndex` で始まる位置から逆方向に検索されます。 このメソッドは `Array.prototype.lastIndexOf()` と同じアルゴリズムです。

試してみましょう
--------

構文
--


```js
lastIndexOf(searchElement)
lastIndexOf(searchElement, fromIndex)
```

### 引数

`searchElement`

型付き配列内で検索する要素。

`fromIndex` 省略可

検索を始める位置を示すゼロ基点のインデックスで、整数に変換されます。

### 返値

型付き配列内における最後の `searchElement` のインデックスです。見つからなかったら `-1` になります。

解説
--

詳細については、 `Array.prototype.lastIndexOf()` をご覧ください。このメソッドは汎用的ではなく、型付き配列インスタンスに対してのみ呼び出すことができます。

例
-

### lastIndexOf() の使用


```js
const uint8 = new Uint8Array([2, 5, 9, 2]);
uint8.lastIndexOf(2); // 3
uint8.lastIndexOf(7); // -1
uint8.lastIndexOf(2, 3); // 3
uint8.lastIndexOf(2, 2); // 0
uint8.lastIndexOf(2, -2); // 0
uint8.lastIndexOf(2, -1); // 3
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-%typedarray%.prototype.lastindexof |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `TypedArray.prototype.lastIndexOf` のポリフィル (`core-js`)
* JavaScript の型付き配列
* `TypedArray`
* `TypedArray.prototype.findIndex()`
* `TypedArray.prototype.findLastIndex()`
* `TypedArray.prototype.indexOf()`
* `Array.prototype.lastIndexOf()`
* `String.prototype.lastIndexOf()`
TypedArray.prototype.entries()
==============================

**`entries()`** は `TypedArray` インスタンスのメソッドで、型付き配列の各インデックスのキーと値を含む新しい配列のイテレーターオブジェクトを返します。このメソッドは `Array.prototype.entries()` と同じアルゴリズムです。

試してみましょう
--------

構文
--


```js
entries()
```

### 引数

なし。

### 返値

新しい配列イテレーターオブジェクトです。

解説
--

詳細については、 `Array.prototype.entries()` をご覧ください。このメソッドは汎用的ではなく、型付き配列インスタンスに対してのみ呼び出すことができます。

例
-

### for...of ループを使用した反復処理


```js
const array = new Uint8Array([10, 20, 30, 40, 50]);
const arrayEntries = arr.entries();
for (const element of arrayEntries) {
  console.log(element);
}
```

### 他の反復処理


```js
const array = new Uint8Array([10, 20, 30, 40, 50]);
const arrayEntries = arr.entries();

console.log(arrayEntries.next().value); // [0, 10]
console.log(arrayEntries.next().value); // [1, 20]
console.log(arrayEntries.next().value); // [2, 30]
console.log(arrayEntries.next().value); // [3, 40]
console.log(arrayEntries.next().value); // [4, 50]
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-%typedarray%.prototype.entries |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `TypedArray.prototype.entries` のポリフィル (`core-js`)
* JavaScript の型付き配列ガイド
* `TypedArray`
* `TypedArray.prototype.keys()`
* `TypedArray.prototype.values()`
* `TypedArray.prototype[@@iterator]()`
* `Array.prototype.entries()`
* Iteration protocols
TypedArray.prototype.values()
=============================

**`values()`** は `TypedArray` インスタンスのメソッドで、配列内の各インデックスに対する値を持つ新しい配列イテレーターオブジェクトを返します。このメソッドのアルゴリズムは `Array.prototype.values()` と同じです。

試してみましょう
--------

構文
--


```js
values()
```

### 引数

なし。

### 返値

新しい配列イテレーターオブジェクトです。

解説
--

詳細については、 `Array.prototype.values()` をご覧ください。このメソッドは汎用的ではなく、型付き配列インスタンスに対してのみ呼び出すことができます。

例
-

### for...of ループを用いた反復処理


```js
const arr = new Uint8Array([10, 20, 30, 40, 50]);
const values = arr.values();
for (const n of values) {
  console.log(n);
}
```

### 他の反復処理


```js
const arr = new Uint8Array([10, 20, 30, 40, 50]);
const values = arr.values();
console.log(values.next().value); // 10
console.log(values.next().value); // 20
console.log(values.next().value); // 30
console.log(values.next().value); // 40
console.log(values.next().value); // 50
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-%typedarray%.prototype.values |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `TypedArray.prototype.values` のポリフィル (`core-js`)
* JavaScript の型付き配列ガイド
* `TypedArray`
* `TypedArray.prototype.entries()`
* `TypedArray.prototype.keys()`
* `TypedArray.prototype[@@iterator]()`
* `Array.prototype.values()`
* 反復処理プロトコル
TypedArray.prototype.toLocaleString()
=====================================

**`toLocaleString()`** は `TypedArray` インスタンスのメソッドで、型付き配列の要素を表す文字列を返します。要素は `toLocaleString` メソッドを使用して文字列に変換され、これらの文字列はロケール依存の文字列（カンマ "," など）で区切られます。このメソッドは `Array.prototype.toLocaleString()` と同じアルゴリズムです。

試してみましょう
--------

構文
--


```js
toLocaleString()
toLocaleString(locales)
toLocaleString(locales, options)
```

### 引数

`locales` 省略可

BCP 47 言語タグの文字列か、その配列です。 `locales` 引数の一般的な形式と解釈については、 `Intl` メインページの引数の説明を参照してください。

`options` 省略可

構成プロパティを持つオブジェクトです。 `Number.prototype.toLocaleString()` を参照してください。

### 返値

型付き配列の要素を表す文字列です。

解説
--

詳細については、 `Array.prototype.toLocaleString()` をご覧ください。このメソッドは汎用的ではなく、型付き配列インスタンスに対してのみ呼び出すことができます。

例
-

### toLocaleString() の使用


```js
const uint = new Uint32Array([2000, 500, 8123, 12, 4212]);

uint.toLocaleString();
// de-DE ロケールで実行している場合
// "2.000,500,8.123,12,4.212"

uint.toLocaleString("en-US");
// "2,000,500,8,123,12,4,212"

uint.toLocaleString("ja-JP", { style: "currency", currency: "JPY" });
// "￥2,000,￥500,￥8,123,￥12,￥4,212"
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-%typedarray%.prototype.tolocalestring |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* JavaScript の型付き配列ガイド
* `TypedArray`
* `TypedArray.prototype.toString()`
* `Array.prototype.toLocaleString()`
* `Intl`
* `Intl.ListFormat`
* `Number.prototype.toLocaleString()`
TypedArray.prototype.with()
===========================

**`with()`** は `TypedArray` インスタンスのメソッドで、ブラケット記法を使用して指定された位置の値を変更することのコピーメソッド版です。これは指定されたインデックスの要素を指定された値で置き換えた新しい配列の添字を返します。このメソッドのアルゴリズムは `Array.prototype.with()` と同じです。

構文
--


```js
arrayInstance.with(index, value)
```

### 引数

`index`

型付き配列を変更する場所を示すゼロ基点のインデックスで、整数に変換されます。

`value`

指定された位置に割り当てる値です。

### 返値

`index` の要素を `value` に置き換えた新しい型付き配列。

### 例外

`RangeError`

`index >= array.length` または `index < -array.length` の場合に発生します。

解説
--

詳細については、 `Array.prototype.with()` をご覧ください。このメソッドは汎用的ではなく、型付き配列インスタンスに対してのみ呼び出すことができます。

例
-

### with() の使用


```js
const arr = new Uint8Array([1, 2, 3, 4, 5]);
console.log(arr.with(2, 6)); // Uint8Array [1, 2, 6, 4, 5]
console.log(arr); // Uint8Array [1, 2, 3, 4, 5]
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-%typedarray%.prototype.with |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `TypedArray.prototype.with` のポリフィル (`core-js`)
* JavaScript の型付き配列ガイド
* `TypedArray.prototype.toReversed()`
* `TypedArray.prototype.toSorted()`
* `TypedArray.prototype.at()`
* `Array.prototype.with()`
TypedArray.prototype.some()
===========================

**`some()`** は `TypedArray` インスタンスのメソッドで、型付き配列の中に指定された関数で実装されているテストに合格する要素が 1 つでもあるかどうかをテストします。型付き配列の中に指定された関数が true を返す要素があれば true を返し、なければ false を返します。型付き配列を変更することはありません。このメソッドは `Array.prototype.some()` と同じアルゴリズムです。

試してみましょう
--------

構文
--


```js
some(callbackFn)
some(callbackFn, thisArg)
```

### 引数

`callbackFn`

配列のそれぞれの要素に対して実行する関数です。要素がテストに合格した場合は真値を返し、そうでなければ偽値を返す必要があります。この関数は以下の引数で呼び出されます。

`element`

現在処理されている型付き配列の要素です。

`index`

現在処理されている型付き配列の要素のインデックスです。

`array`

`some()` が実行されている型付き配列です。


`thisArg` 省略可

`callbackFn` を実行する際に `this` として使用する値。反復処理メソッドを参照してください。

### 返値

型付き配列の要素に対して `callbackFn` が真値を返した場合は `true` を即座に返します。それ以外は `false` を返します。

解説
--

詳細については、 `Array.prototype.some()` をご覧ください。このメソッドは汎用的ではなく、型付き配列インスタンスに対してのみ呼び出すことができます。

例
-

### 型付き配列のすべての要素の大きさをテストする

次の例では、型付き配列の中に 10 よりも大きい要素があるかどうかをテストします。


```js
function isBiggerThan10(element, index, array) {
  return element > 10;
}
new Uint8Array([2, 5, 8, 1, 4]).some(isBiggerThan10); // false
new Uint8Array([12, 5, 8, 1, 4]).some(isBiggerThan10); // true
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-%typedarray%.prototype.some |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `TypedArray.prototype.some` のポリフィル (`core-js`)
* JavaScript の型付き配列ガイド
* `TypedArray`
* `TypedArray.prototype.every()`
* `TypedArray.prototype.forEach()`
* `TypedArray.prototype.find()`
* `TypedArray.prototype.includes()`
* `Array.prototype.some()`
TypedArray.BYTES\_PER\_ELEMENT
==============================

**`TypedArray.BYTES_PER_ELEMENT`** プロパティは、型付き配列内の各要素の大きさをバイト単位で表します。

試してみましょう
--------

値
-

`TypedArray` の方に応じた値を持つ数値です。

| `TypedArray.BYTES_PER_ELEMENT` のプロパティ属性 |
| --- |
| 書込可能 | 不可 |
| 列挙可能 | 不可 |
| 設定可能 | 不可 |

解説
--

`TypedArray`オブジェクトは、要素ごとのバイト数とバイトの解釈の仕方がそれぞれ異なります。`BYTES_PER_ELEMENT` 定数は、指定された `TypedArray` の各要素のバイト数を格納します。

`BYTES_PER_ELEMENT` プロパティはインスタンスプロパティでも静的プロパティでもあります。これは `TypedArray` サブクラスのコンストラクターとコンストラクターのインスタンスの両方で利用することができます。

インスタンスプロパティとして、`BYTES_PER_ELEMENT` はコンストラクターの `prototype` で定義されます。


```js
console.log(Object.hasOwn(Int8Array.prototype, "BYTES\_PER\_ELEMENT")); // true
```

例
-

### BYTES\_PER\_ELEMENT の使用

静的プロパティとして


```js
Int8Array.BYTES\_PER\_ELEMENT; // 1
Uint8Array.BYTES\_PER\_ELEMENT; // 1
Uint8ClampedArray.BYTES\_PER\_ELEMENT; // 1
Int16Array.BYTES\_PER\_ELEMENT; // 2
Uint16Array.BYTES\_PER\_ELEMENT; // 2
Int32Array.BYTES\_PER\_ELEMENT; // 4
Uint32Array.BYTES\_PER\_ELEMENT; // 4
Float32Array.BYTES\_PER\_ELEMENT; // 4
Float64Array.BYTES\_PER\_ELEMENT; // 8
BigInt64Array.BYTES\_PER\_ELEMENT; // 8
BigUint64Array.BYTES\_PER\_ELEMENT; // 8
```


インスタンスプロパティとして


```js
new Int8Array([]).BYTES\_PER\_ELEMENT; // 1
new Uint8Array([]).BYTES\_PER\_ELEMENT; // 1
new Uint8ClampedArray([]).BYTES\_PER\_ELEMENT; // 1
new Int16Array([]).BYTES\_PER\_ELEMENT; // 2
new Uint16Array([]).BYTES\_PER\_ELEMENT; // 2
new Int32Array([]).BYTES\_PER\_ELEMENT; // 4
new Uint32Array([]).BYTES\_PER\_ELEMENT; // 4
new Float32Array([]).BYTES\_PER\_ELEMENT; // 4
new Float64Array([]).BYTES\_PER\_ELEMENT; // 8
new BigInt64Array([]).BYTES\_PER\_ELEMENT; // 8
new BigUint64Array([]).BYTES\_PER\_ELEMENT; // 8
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-typedarray.bytes\_per\_element |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* JavaScript の型付き配列
* `TypedArray`
TypedArray.prototype.find()
===========================

**`find()`** は `TypedArray` インスタンスのメソッドで、型付き配列のある要素の値が与えられたテスト関数を満たした場合、その値を返します。そうでなければ `undefined` を返します。このメソッドのアルゴリズムは `Array.prototype.find()` と同じです。

試してみましょう
--------

構文
--


```js
find(callbackFn)
find(callbackFn, thisArg)
```

### 引数

`callbackFn`

配列のそれぞれの要素に対して実行する関数です。要素がテストに合格した場合は真値を返し、そうでなければ偽値を返す必要があります。この関数は以下の引数で呼び出されます。

`element`

現在処理されている型付き配列の要素です。

`index`

現在処理されている型付き配列の要素のインデックスです。

`array`

`find()` が実行されている型付き配列です。


`thisArg` 省略可

`callbackFn` を実行する際に `this` として使用する値。反復処理メソッドを参照してください。

### 返値

テストを満たした配列の要素の位置を返します。それ以外の場合は、 `undefined` を返します。

解説
--

詳細については、 `Array.prototype.find()` をご覧ください。このメソッドは汎用的ではなく、型付き配列インスタンスに対してのみ呼び出すことができます。

例
-

### 型付き配列内の素数を探す

次の例では、型付き配列内で素数である要素を探します（または、素数がない場合は `undefined` を返します）。


```js
function isPrime(element, index, array) {
  let start = 2;
  while (start <= Math.sqrt(element)) {
    if (element % start++ < 1) {
      return false;
    }
  }
  return element > 1;
}

const uint8 = new Uint8Array([4, 5, 8, 12]);
console.log(uint8.find(isPrime)); // 5
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-%typedarray%.prototype.find |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `TypedArray.prototype.find` のポリフィル (`core-js`)
* JavaScript の型付き配列ガイド
* `TypedArray`
* `TypedArray.prototype.findIndex()`
* `TypedArray.prototype.findLast()`
* `TypedArray.prototype.findLastIndex()`
* `TypedArray.prototype.includes()`
* `TypedArray.prototype.filter()`
* `TypedArray.prototype.every()`
* `TypedArray.prototype.some()`
* `Array.prototype.find()`
TypedArray.prototype.toReversed()
=================================

**`toReversed()`** は `TypedArray` インスタンスのメソッドで、 `reverse()` メソッドに対応するコピーメソッドです。このメソッドは、要素を逆順にした新しい型付き配列を返します。このメソッドは `Array.prototype.toReversed()` と同じアルゴリズムです。

構文
--


```js
toReversed()
```

### 引数

なし。

### 返値

要素を逆順に格納した新しい型付き配列です。

解説
--

詳細については、 `Array.prototype.toReversed()` をご覧ください。このメソッドは汎用的ではなく、型付き配列インスタンスに対してのみ呼び出すことができます。

例
-

### toReversed() の使用


```js
const uint8 = new Uint8Array([1, 2, 3]);
const reversedUint8 = uint8.toReversed();
console.log(reversedUint8); // Uint8Array [3, 2, 1]
console.log(uint8); // Uint8Array [1, 2, 3]
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-%typedarray%.prototype.toreversed |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `TypedArray.prototype.toReversed` のポリフィル (`core-js`)
* JavaScript の型付き配列ガイド
* `TypedArray.prototype.reverse()`
* `TypedArray.prototype.toSorted()`
* `TypedArray.prototype.with()`
* `Array.prototype.toReversed()`
Reflect.preventExtensions()
===========================

静的な **`Reflect.preventExtensions()`** メソッドは、すでにプロパティが追加されたオブジェクトに、新しいプロパティを抑制します (つまり、オブジェクトのさらなる拡張を抑制します)。 `Object.preventExtensions()` に似ていますが、違いがあります。

試してみましょう
--------

構文
--
```

Reflect.preventExtensions(target)
```

### 引数

`target`

拡張を抑止する対象のオブジェクト。

### 返値

`Boolean` で、対象が拡張の抑止の設定に成功したかどうかを表します。

### 例外

`TypeError`: `target` が `Object` ではない場合

解説
--

`Reflect.preventExtensions` メソッドは、すでにプロパティが追加されたオブジェクトに、新しいプロパティを抑制します (つまり、オブジェクトのさらなる拡張を抑制します)。これは `Object.preventExtensions()` と同様のメソッドです。

例
-

### Reflect.preventExtensions() の使用

`Object.preventExtensions()` も参照してください。


```js
// オブジェクトは既定で拡張可能。
let empty = {};
Reflect.isExtensible(empty); // === true

// ...しかし、変更できる。
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // === false
```

### Object.preventExtensions() との違い

このメソッドへの最初の引数がオブジェクトではない (プリミティブである) 場合、 `TypeError` が発生します。 `Object.preventExtensions()` では、 `target` がオブジェクトではない場合はオブジェクトに強制的に変換されます。


```js
Reflect.preventExtensions(1);
// TypeError: 1 is not an object

Object.preventExtensions(1);
// 1
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.preventextensions |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Reflect`
* `Object.isExtensible()`
Reflect.getOwnPropertyDescriptor()
==================================

静的な **`Reflect.getOwnPropertyDescriptor()`** メソッドは `Object.getOwnPropertyDescriptor()` と似ています。オブジェクトにプロパティが存在する場合は、指定されたプロパティのプロパティ記述子を返します。一方、プロパティが存在しない場合は `undefined` を返します。

試してみましょう
--------

構文
--
```

Reflect.getOwnPropertyDescriptor(target, propertyKey)
```

### 引数

`target`

プロパティを探す対象のオブジェクト。

`propertyKey`

所有しているプロパティ記述子を取得するためのプロパティ名。

### 返値

`target` オブジェクト内にプロパティが存在する場合は、プロパティ記述子オブジェクト、または `undefined`。

### 例外

`TypeError`: `target` が `Object` ではない場合

解説
--

`Reflect.getOwnPropertyDescriptor` オブジェクトにプロパティが存在する場合、与えられたプロパティのプロパティディスクリプタを返します。一方、プロパティが存在しない場合は、`undefined` を返します。`Object.getOwnPropertyDescriptor()` との唯一の違いは、非オブジェクトの対象がどのようにバンドルされるかだけです。

例
-

### Reflect.getOwnPropertyDescriptor() の使用


```js
Reflect.getOwnPropertyDescriptor({ x: "hello" }, "x");
// {value: "hello", writable: true, enumerable: true, configurable: true}

Reflect.getOwnPropertyDescriptor({ x: "hello" }, "y");
// undefined

Reflect.getOwnPropertyDescriptor([], "length");
// {value: 0, writable: true, enumerable: false, configurable: false}
```

### Object.getOwnPropertyDescriptor() との違い

このメソッドへの最初の引数がオブジェクトではない (プリミティブであった) 場合、 `TypeError` が発生します。 `Object.getOwnPropertyDescriptor` だと、非オブジェクトである最初の引数は強制的にオブジェクトに変換されます。


```js
Reflect.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo" is not non-null object

Object.getOwnPropertyDescriptor("foo", 0);
// { value: "f", writable: false, enumerable: true, configurable: false }
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.getownpropertydescriptor |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Reflect`
* `Object.getOwnPropertyDescriptor()`
Reflect.isExtensible()
======================

静的な **`Reflect.isExtensible()`** メソッドは 、オブジェクトを拡張できるかを測定します (オブジェクトに追加された新しいプロパティを持てるかどうか)。これは `Object.isExtensible()` に似ていますが、いくつかの違いがあります。

試してみましょう
--------

構文
--
```

Reflect.isExtensible(target)
```

### 引数

`target`

拡張できるかどうかをチェックする対象のオブジェクト。

### 返値

対象が拡張可能かどうかを示す `Boolean` 値。

### 例外

`TypeError`: `target` が `Object` ではなかった場合。

解説
--

`Reflect.isExtensible` メソッドは 、オブジェクトを拡張できるかを測定します（オブジェクトに追加された新しいプロパティを持てるかどうか）。これは `Object.isExtensible()` と同じメソッドです。

例
-

### Reflect.isExtensible() の使用

`Object.isExtensible()` も見てください。


```js
// 今オブジェクトは拡張可能。
let empty = {};
Reflect.isExtensible(empty); // === true

// ...しかし、変更できます
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // === false

// シールドオブジェクトは拡張できないように定義される。
let sealed = Object.seal({});
Reflect.isExtensible(sealed); // === false

// フローズンオブジェクトも拡張できないように定義される。
let frozen = Object.freeze({});
Reflect.isExtensible(frozen); // === false
```

### Object.isExtensible() との違い

このメソッドへの最初の引数がオブジェクトではなかった (プリミティブであった) 場合、これは `TypeError` を引き起こします。`Object.isExtensible()` だと、オブジェクトではない最初の引数はオブジェクトに強制的に変換されます。


```js
Reflect.isExtensible(1);
// TypeError: 1 はオブジェクトではない

Object.isExtensible(1);
// false
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.isextensible |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Reflect`
* `Object.isExtensible()`
Reflect.ownKeys()
=================

静的な **`Reflect.ownKeys()`** メソッドは、 `target` オブジェクトが持つプロパティキーの配列を返します。

試してみましょう
--------

構文
--
```

Reflect.ownKeys(target)
```

### 引数

`target`

キーを取得する対象のオブジェクト

### 返値

`target` オブジェクトが持つプロパティキーの `Array` 。

### 例外

`TypeError`: `target` が `Object` ではない場合

解説
--

`Reflect.ownKeys` メソッドは、対象のオブジェクトが持つプロパティキーの配列を返します。この返値は、`Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))` と同じです。

例
-

### Reflect.ownKeys() の使用


```js
Reflect.ownKeys({ z: 3, y: 2, x: 1 }); // [ "z", "y", "x" ]
Reflect.ownKeys([]); // ["length"]

let sym = Symbol.for("comet");
let sym2 = Symbol.for("meteor");
let obj = {
  [sym]: 0,
  str: 0,
  773: 0,
  0: 0,
  [sym2]: 0,
  "-1": 0,
  8: 0,
  "second str": 0,
};
Reflect.ownKeys(obj);
// [ "0", "8", "773", "str", "-1", "second str", Symbol(comet), Symbol(meteor) ]
// 数字順のインデックス、
// 挿入順の文字列、
// 挿入順のシンボル
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.ownkeys |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Reflect`
* `Object.getOwnPropertyNames()`
Reflect.set()
=============

静的な **`Reflect.set()`** メソッドは、オブジェクトにプロパティを設定するかのように動作します。

試してみましょう
--------

構文
--
```

Reflect.set(target, propertyKey, value[, receiver])
```

### 引数

`target`

プロパティを設定する対象のオブジェクト。

`propertyKey`

設定するプロパティ名。

`value`

設定する値。

`receiver` 省略可

セッターによって `target` が呼び出されたときの `this` 値を提供する。

### 返値

プロパティが成功裏に設定できたかどうかを示す `Boolean` 値。

### 例外

`TypeError`: `target` が `Object` ではなかった場合。

解説
--

`Reflect.set` メソッドは、オブジェクトにプロパティを設定します。これはプロパティの割り当てを行い、機能としては プロパティアクセサー 構文のようなものです。

例
-

### Reflect.set() の使用


```js
// オブジェクト
let obj = {};
Reflect.set(obj, "prop", "value"); // true
obj.prop; // "value"

// 配列
let arr = ["duck", "duck", "duck"];
Reflect.set(arr, 2, "goose"); // true
arr[2]; // "goose"

// 配列を切り詰められる。
Reflect.set(arr, "length", 1); // true
arr; // ["duck"]

// 引数が1つだけだと、プロパティキーと値は "undefined" になる。
let obj = {};
Reflect.set(obj); // true
Reflect.getOwnPropertyDescriptor(obj, "undefined");
// { value: undefined, writable: true, enumerable: true, configurable: true }
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.set |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Reflect`
* プロパティアクセサー