recursal/MDN huggingface dataset:
Intl.Locale.prototype.numeric
=============================

**`Intl.Locale.prototype.numeric`** プロパティは、ロケールが特別な数字の照合処理を行うかどうかを返すアクセサープロパティです。

解説
--

`Intl.Locale.caseFirst` と同様、 `numeric` はロケールが使用する照合規則を変更するものです。 `numeric` は論理値で、 `true` か `false` のどちらかになります。 `numeric` を `false` に設定した場合は、文字列内の数値を特別に扱うことはありません。 `numeric` を `true` に設定した場合は、ロケールは文字列を照合する際に数値を考慮します。この数値の特別な扱いとは、数字の並びを数値として比較するということです。例えば、 "A-21" という文字列は "A-123" よりも小さいとみなされます。

例
-

### ロケール文字列から `numeric` の値を設定

Unicode ロケール文字列仕様書では、 `numeric` が表す値はキー `kn` に対応しています。 `kn` はロケール文字列の「拡張サブタグ」とみなされます。これらのサブタグは、ロケールに関する追加データを追加するもので、拡張キー `-u` を使用してロケール識別子に追加されます。このようして、 `numeric` の値を `Locale` コンストラクターに渡される初期のロケール識別子文字列に追加することができます。 `numeric` の値を設定するには、まず文字列に `-u` 拡張キーを追加します。次に、 `-kn` 拡張キーを追加して、 `numeric` の値を追加していることを示します。最後に、文字列に `numeric` の値を追加します。 `numeric` を `true` に設定したい場合は、単に `kn` キーを追加するだけで十分です。値を `false` にするには、 `kn` キーの後に "`false`" を指定する必要があります。


```js
let locale = new Intl.Locale("fr-Latn-FR-u-kn-false");
console.log(locale.numeric); // "false" と表示
```

### 構成オブジェクト引数から `numeric` の値を設定

`Intl.Locale` コンストラクターには、オプションで構成オブジェクトの引数があり、これを使用して拡張の種類を渡すことができます。構成オブジェクトの `numeric` プロパティを任意の `numeric` に設定し、コンストラクターに渡します。


```js
let locale = new Intl.Locale("en-Latn-US", { numeric: true });
console.log(locale.numeric); // "true" と表示
```

仕様書
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-Intl.Locale.prototype.numeric |

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

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

関連情報
----

* `Intl.Locale`
Intl.Locale.prototype.collation
===============================

**`Intl.Locale.prototype.collation`** プロパティは、 `Locale` の照合種別を返すアクセサープロパティです。

解説
--

照合順序とは、文字列を順番に並べる処理のことです。検索クエリーの結果やデータベース内のレコードの順序など、文字列を一定の順序に並べ替える必要がある場合に使用されます。文字列を順番に並べるという考えは些細なことと思えるかもしれませんが、順番の考え方は地域や言語によって異なる場合があります。 `collation` プロパティは、 JavaScript プログラマーが特定のロケールで使用される照合順序の種類に簡単にアクセスできるようにするためのものです。

利用可能な照合種別は下記の表にあります。 Unicode 照合仕様書から引用したものです。

有効な照合種別
-------

| 照合種別 | 説明 |
| --- | --- |
| big5han | ラテン文字はピンイン順、漢字は big5 文字セット順（中国語向け）

**注:** `big5han` 照合種別は Chrome や Edge では使用できません。
 |
| compat | 前の版の順序で、互換性のため（アラビア語向け） |
| dict | 辞書形式の順序（シンハラ語向け） |
| 
**警告:** `direct` 照合種別は非推奨です。使用しないでください。

direct | バイナリコードポイント順 |
| ducet | 既定の Unicode 照合順で、要素表順

**警告:** `ducet` 照合種別はウェブでは利用できません。代わりに `und` ロケールを照合種別指定子なしで使用してください。 `und` は DUCET に最も近い照合種別です。
 |
| emoji | 絵文字に推奨される順序（`und` ロケール向け） |
| eor | ヨーロッパ語の順序の規則（`und` ロケール向け） |
| gb2312 | ラテン文字はピンイン順、漢字は gb2312han 文字セット順（中国語向け）

**注:** `gb2313` 照合種別は Chrome や Edge では使用できません。
 |
| phonebk | 電話帳形式の順序（ドイツ語向け） |
| phonetic | 発音順（発音に基づく順序、リンガラ語向け） |
| pinyin | ラテン文字と漢字はピンイン順（中国語向け） |
| reformed | リフォーム順（スウェーデン語向け）

**注:** これは、 2022 年 5 月現在、スウェーデン語の既定の順序ですが、照合順序の名前が異常です。これは既定値なので、 `sv-u-co-reformed` をリクエストするのではなく、 `sv` をリクエストしてください。
 |
| search | 文字列検索のための特殊な照合種別


**警告:** 使用しないでください。 `Intl.Collator` ではこの照合種別は `usage` オプションで `search` の値を設定すると有効になります。
 さらに、この照合を検索で使用する API は今のところありません。

 |
| searchjl | 韓国語の頭文字子音検索用の特殊な照合種別 |
| standard | 各言語の既定の照合順。ただし、中国語と、 2022 年 5 月時点ではスウェーデン語を除きます。

**警告:** 明示的に使用しないでください。一般に、明示的に指定する必要はありません。また、スウェーデン語に対してこれを指定すると、将来、スウェーデン語の照合順序の命名が他の言語と整合するように変更された場合に問題があります。
 |
| stroke | ラテン文字はピンイン順、漢字は画数順（中国語向け） |
| trad | 歴史的なスタイルの順序（スペイン語など） |
| unihan | 
 漢字の部首の画数順（中国語、日本語、韓国語向け）。
 中国語の場合はラテン文字はピンイン順。

**注:** `unihan` 照合種別は Chrome や Edge では使用できません。
 |
| zhuyin | ラテン語はピンイン順、ボポモフォと漢字は竹簡順（中国語向け） |

例
-

他のロケールのサブタグと同様、照合種別はロケール文字列やコンストラクターの構成オブジェクトの引数で `Intl.Locale` オブジェクトに追加することができます。

### ロケール文字列による照合種別の追加

Unicode ロケール文字列仕様書では、照合種別はロケールキーの「拡張子サブタグ」となります。これらのサブタグは、ロケールに関するデータを追加するもので、 `-u` 拡張を使用してロケール識別子に追加されます。つまり、照合種別は、ロケールのコンストラクターに渡される初期のロケール識別子文字列に追加することができます。照合種別を追加するには、まず文字列に `-u` 拡張を追加します。次に、照合順序の型を追加することを示すために `-co` 拡張を追加します。最後に、照合順序を文字列に追加します。


```js
let locale = new Intl.Locale("zh-Hant-u-co-zhuyin");
console.log(locale.collation); // "zhuyin" と表示
```

### 構成オブジェクト引数による照合種別の追加

`Intl.Locale` コンストラクターには、オプションで構成オブジェクトの引数があり、これには照合種別を含む任意の拡張の種類をいくつか含めることができます。構成オブジェクトの `collation` プロパティを任意の照合種別に設定し、コンストラクターに渡します。


```js
let locale = new Intl.Locale("zh-Hant", { collation: "zhuyin" });
console.log(locale.collation); // "zhuyin" と表示
```

仕様書
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-Intl.Locale.prototype.collation |

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

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

関連情報
----

* `Intl.Locale`
Intl.Locale.prototype.region
============================

**`Intl.Locale.prototype.region`** プロパティは、ロケールに関連付けられた世界の地域（ふつうは国）を返すアクセサープロパティです。

解説
--

地域は、ロケールを世界の特定の地域に位置づけるための、ロケール識別子の重要な要素となります。ロケールの地域を知ることは、ロケール間の違いを識別する上で非常に重要です。たとえば、イギリスとアメリカ合衆国では英語が使われていますが、両国間では綴りやその他の言語の慣習に違いがあります。ロケールの地域を知ることで、 JavaScript プログラマーがサイトやアプリケーションのコンテンツを世界の様々な地域から見たときに正しく表示されるようにするのに役立ちます。

例
-

### ロケール識別子の文字列引数で地域を設定

地域は、有効な Unicode 言語識別子文字列の 3 番目の部分であり、これを `Locale` コンストラクターに渡すロケール識別子文字列に追加することで設定することができます。なお、地域はロケール識別子の必須項目ではありません。


```js
let locale = new Intl.Locale("en-Latn-US");
console.log(locale.region); // "US" と表示
```

### 構成オブジェクトから地域を設定

`Locale` コンストラクターは構成オブジェクトを取り、これを用いて地域のサブタグとプロパティを設定することができます。


```js
let locale = new Intl.Locale("ja-Jpan", { region: "JP" });
console.log(locale.region); // "JP" と表示
```

仕様書
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-Intl.Locale.prototype.region |

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

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

関連情報
----

* `Intl.Locale`
* Unicode 地域一覧表
Intl.Locale.prototype.caseFirst
===============================

**`Intl.Locale.prototype.caseFirst`** プロパティは、ロケールの照合規則に大文字小文字を考慮するかどうかを返すアクセサープロパティです。

解説
--

ロケールの照合規則は、そのロケールでの文字列の並び順を決定するために用いられます。ロケールによっては、照合処理で文字の大文字小文字を使用する場合があります。この追加ルールは、 `Locale` の `caseFirst` プロパティで表現することができます。

`caseFirst` プロパティには下記の表にある通り、 3 種類の値を指定することができます。

### `caseFirst` の値

| 値 | 説明 |
| --- | --- |
| `upper` | 大文字が小文字よりも前に並べられます。 |
| `lower` | 小文字が大文字よりも前に並べられます。 |
| `false` | 大文字と小文字で特別な並べ替えはしません。 |

例
-

### ロケール文字列による `caseFirst` 値の設定

Unicode ロケール文字列仕様書では、 `caseFirst` が表す値は `kf` キーに対応します。 `kf` はロケール文字列の「拡張子サブタグ」として扱われます。これらのサブタグは、ロケールに関するデータを追加するもので、 `-u` 拡張を使用してロケール識別子に追加されます。つまり、 `caseFirst` の値は、 `Locale` コンストラクターに渡される初期のロケール識別子文字列に追加することができます。 `caseFirst` の値を追加するには、まず文字列に `-u` 拡張キーを追加します。次に、照合順序の型を追加することを示すために `-kf` 拡張キーを追加します。最後に、 `caseFirst` の値を文字列に追加します。


```js
let locale = new Intl.Locale("fr-Latn-FR-u-kf-upper");
console.log(locale.caseFirst); // "upper" と表示
```

### 構成オブジェクト引数による caseFirst の値の設定

`Intl.Locale` コンストラクターには、オプションで構成オブジェクトの引数があり、拡張の種類を渡すために使用することができます。構成オブジェクトの `caseFirst` プロパティを望みの `caseFirst` の値に設定し、コンストラクターに渡します。


```js
let locale = new Intl.Locale("en-Latn-US", { caseFirst: "lower" });
console.log(locale.caseFirst); // "lower" と表示
```

仕様書
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-Intl.Locale.prototype.caseFirst |

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

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

関連情報
----

* `Intl.Locale`
* Unicode case first collation spec
Intl.Locale.prototype.toString()
================================

**`Intl.Locale.prototype.toString()`** は、このロケールの完全なロケール識別子文字列を返します。

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

構文
--


```js
toString();
```

### 返値

この*ロケール*の Unicode ロケール識別子文字列です。

解説
--

`Locale` オブジェクトは、概念的な Unicode ロケール識別子を JavaScript で表現したものです。特定のロケールに関する情報 (言語、文字体系、カレンダーの種類など) を、ロケール識別子文字列で符号化することができます。これらのロケール識別子をより簡単に扱えるようにするために、 `Locale` オブジェクトが JavaScript に導入されました。 Locale オブジェクトの `toString` メソッドをコールすると、そのロケールの識別子文字列を返します。 `toString` メソッドを使用すると、 `Locale` のインスタンスが既存の `Intl` のコンストラクターへの引数ととして JSON におけるシリアライズにおいて、またはその他のコンテキストで正確な文字列表現が有用な場合に提供することができます。

例
-

### toString の使用


```js
let myLocale = new Intl.Locale("ja-Jpan-JP", {
  hourCycle: "h24",
  calendar: "gregory",
});
console.log(myLocale.baseName); // "ja-Jpan-JP" と表示
console.log(myLocale.toString()); // "ja-Jpan-JP-u-ca-gregory-hc-h24" と表示
```

仕様書
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-Intl.Locale.prototype.toString |

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

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

関連情報
----

* `Intl.Locale`
* `Intl.Locale.baseName`
Intl.Locale.prototype.calendar
==============================

**`Intl.Locale.prototype.calendar`** プロパティは、 `Locale` で使用される暦の種類を返すアクセサープロパティです。

解説
--

`calendar` プロパティは `Locale` の一部、 `Locale` の暦を示す部分を返します。世界の大部分はグレゴリオ暦を使用していますが、世界各地で使用されている地域暦もいくつかあります。以下の表に、有効な Unicode 暦キー文字列をすべて示します。

### Unicode 暦キー

`buddhist`

タイの仏教暦

`chinese`

古来の中国の暦

`coptic`

コプト暦

`dangi`

古来の韓国の暦

`ethioaa`

Ethiopic calendar, Amete Alem (epoch approx. 5493 B.C.E)

`ethiopic`

Ethiopic calendar, Amete Mihret (epoch approx, 8 C.E.)

`gregory`

グレゴリオ暦

`hebrew`

古来のヘブライ暦

`indian`

インド暦

`islamic`

イスラム暦

`islamic-umalqura`

イスラム暦、ウンムアルクーラ

`islamic-tbla`

イスラム暦、表形式 (閏年 [2,5,7,10,13,16,18,21,24,26,29] - 天体暦)

`islamic-civil`

イスラム暦、表形式 (閏年 [2,5,7,10,13,16,18,21,24,26,29] - 市民暦)

`islamic-rgsa`

イスラム暦、サウジアラビア地方

`iso8601`

ISO カレンダー (ISO 8601 カレンダーの曜日規則を使用したグレゴリオ暦)

`japanese`

日本の皇紀

`persian`

ペルシャ暦

`roc`

中華民国暦 (中華民国)

`islamicc`

シビル（アルゴリズム）アラビア暦

**警告:** `islamicc` 暦は非推奨です。 `islamic-civil` を使用してください。

例
-

ロケール文字列へのカレンダーの追加
-----------------

暦は、ロケールキーの「拡張キー」に該当します。これらのキーは、ロケールに関するデータを追加するもので、拡張子 `-u` を使用してロケール識別子に追加します。したがって、 `Intl.Locale` コンストラクターに渡される初期のロケール識別子文字列に暦の種類を追加することができます。暦の種類を追加するには、まず文字列に `-u` 拡張を追加します。次に、暦の種類を追加することを示すために `-ca` 拡張を追加します。最後に、暦を文字列に追加します。


```js
let locale = new Intl.Locale("fr-FR-u-ca-buddhist");
console.log(locale.calendar); // "buddhist" と表示
```

### 構成オブジェクトによる暦の追加

`Intl.Locale` コンストラクターには、オプションで構成オブジェクトの引数があり、カレンダーを含めた拡張の種類を渡すために使用することができます。構成オブジェクトの `calendar` プロパティを望みの暦の値に設定し、コンストラクターに渡します。


```js
let locale = new Intl.Locale("fr-FR", { calendar: "buddhist" });
console.log(locale.calendar); // "buddhist" と表示
```

仕様書
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-Intl.Locale.prototype.calendar |

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

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

関連情報
----

* `Intl.Locale`
* Unicode 暦識別子
Intl.Locale.prototype.script
============================

**`Intl.Locale.prototype.script`** プロパティは、ロケールで使われている特定の言語を書くための文字体系を返すアクセサープロパティです。

解説
--

文字体系は、用字系と呼ばれることもありますが、ロケールの核となる属性の一つです。これは、特定の言語を書くために使用される記号やグリフの集合を示しています。例えば、英語の文字はラテン文字ですが、韓国語の文字はハングルです。多くの場合、言語（これは必須）は単一の文字体系でしか書かれないので、文字体系を記述することは厳密には必要ありません。この規則には例外があり、完全な Unicode 言語識別子を持つためには、可能な限り文字体系を示すことが重要です。

例
-

### ロケール識別子の文字列引数で文字体系を設定

文字体系は、有効な Unicode 言語識別子文字列の 2 番目の部分であり、これを `Locale` コンストラクターに渡すロケール識別子文字列に追加することで設定することができます。なお、文字体系はロケール識別子の必須項目ではありません。


```js
let locale = new Intl.Locale("en-Latn-US");
console.log(locale.script); // "Latn" と表示
```

### 構成オブジェクトから文字体系を設定

`Locale` コンストラクターは構成オブジェクトを取り、これを用いて文字体系のサブタグとプロパティを設定することができます。


```js
let locale = new Intl.Locale("ja-JP", { script: "Jpan" });
console.log(locale.script); // "Jpan" と表示
```

仕様書
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-Intl.Locale.prototype.script |

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

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

関連情報
----

* `Intl.Locale`
* Unicode の文字体系サブタグ仕様書
Intl.Locale.prototype.baseName
==============================

**`Intl.Locale.prototype.baseName`** プロパティは、 `Locale` の文字列表現の部分文字列を返し、そこには `Locale` についての中核情報が含まれています。

解説
--

`Intl.Locale` オブジェクトは、解析されたロケールとそのロケールのオプションを表します。 `baseName` プロパティは、ロケールに関する基本的な情報を、完全なデータ文字列の部分文字列の形で返します。具体的には、このプロパティは言語を含む部分文字列を返し、文字体系や地域があればそれも返します。

`baseName` は `言語 ["-" 文字体系] ["-" 地域] *("-" variant)` の形で unicode\_language\_id 構文の部分文字列を返します。

例
-

### 基本的な例


```js
let myLoc = new Intl.Locale("fr-Latn-CA"); // ロケールをカナダのフランス語に設定
console.log(myLoc.toString()); // "fr-Latn-CA-u-ca-gregory" と表示
console.log(myLoc.baseName); // "fr-Latn-CA" と表示
```

### 入力文字列のオプション付きの例


```js
// 言語を日本語、地域を日本に設定する。

// カレンダーをグレゴリオ暦、時制を 24 時制にする
let japan = new Intl.Locale("ja-JP-u-ca-gregory-hc-24");
console.log(japan.toString()); // "ja-JP-u-ca-gregory-hc-h24" と表示
console.log(japan.baseName); // "ja-JP" と表示
```

### 入力文字列を上書きするオプション付きの例


```js
// 入力文字列は言語がオランダ語、地域がベルギーであることを示していますが、

// ただし、オプションオブジェクトで地域を上書きしており、オランダに設定しています
let dutch = new Intl.Locale("nl-Latn-BE", { region: "NL" });

console.log(dutch.baseName); // "nl-Latn-NL" と表示
```

仕様書
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-Intl.Locale.prototype.baseName |

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

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

関連情報
----

* `Intl.Locale`
Uint8Array() コンストラクター
=====================

**`Uint8Array()`** は型付き配列のコンストラクターで、 8 ビット符号なし整数値の配列を生成します。中身は `0` で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。

構文
--
```

new Uint8Array(); // new in ES2017
new Uint8Array(length);
new Uint8Array(typedArray);
new Uint8Array(object);
new Uint8Array(buffer [, byteOffset [, length]]);
```

### 引数

`length`

`length` 引数付きで呼び出されると、メモリ内に内部的な配列バッファーを作成し、大きさは `length` *を `BYTES_PER_ELEMENT`* で乗じたバイト数になり、ゼロになることもあります。

`typedArray`

`typedArray` 引数付きで呼び出されると、これはあらゆる型付き配列型 (例えば `Int32Array`) にすることができますが、 `typedArray` を新しい型付き配列にコピーします。 `typedArray` の中のそれぞれの値は、新しい配列にコピーされる前にコンストラクターの対応する型に変換されます。新しい型付き配列の長さは `typedArray` 引数の長さと同じになります。

`object`

`object` 引数付きで呼び出されると、あたかも `TypedArray.from()` メソッドであるかのように新しい型付き配列が生成されます。

`buffer`, `byteOffset`, `length`

`buffer` と、オプションで `byteOffset` と `length` 引数を指定して呼び出されると、指定された `ArrayBuffer` を表示する型付き配列ビューが生成されます。 `byteOffset` および `length` 引数は、型付き配列ビューが表示するメモリ範囲を指定する。 両方を省略した場合は `buffer` の全てを表示し、 `length` のみを省略した場合は `buffer` の残りを表示します。

例
-

### 様々な方法による Uint8Array の生成


```js
// 長さを指定
var uint8 = new Uint8Array(2);
uint8[0] = 42;
console.log(uint8[0]); // 42
console.log(uint8.length); // 2
console.log(uint8.BYTES\_PER\_ELEMENT); // 1

// 配列から
var arr = new Uint8Array([21, 31]);
console.log(arr[1]); // 31

// 他の型付き配列から
var x = new Uint8Array([21, 31]);
var y = new Uint8Array(x);
console.log(y[0]); // 21

// ArrayBuffer から
var buffer = new ArrayBuffer(8);
var z = new Uint8Array(buffer, 1, 4);

// 反復可能オブジェクトから
var iterable = (function\* () {
  yield\* [1, 2, 3];
})();
var uint8 = new Uint8Array(iterable);
// Uint8Array[1, 2, 3]
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-typedarray-constructors |

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

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

### 互換性メモ

ECMAScript 2015 から、 `Uint8Array` コンストラクターは構築に `new` 演算子が必要になりました。 `Uint8Array` コンストラクターを `new` なしで関数として呼び出すと、 `TypeError` が発生するようになりました。


```js
var dv = Uint8Array([1, 2, 3]);
// TypeError: calling a builtin Uint8Array constructor
// without new is forbidden
```



```js
var dv = new Uint8Array([1, 2, 3]);
```

関連情報
----

* JavaScript 型付き配列
* `ArrayBuffer`
* `DataView`
get SharedArrayBuffer[@@species]
================================

**`SharedArrayBuffer[@@species]`** アクセサープロパティは、`SharedArrayBuffer` の各メソッドから返される値を作成するために使用されるコンストラクター（種）を返します。

**警告:** `@@species` が存在すると、任意のコードの実行が可能になり、セキュリティ上の脆弱性が生じる可能性があります。また、ある種の最適化も非常に難しくなります。エンジンの実装者たちは、この機能を削除するかどうか調査しています。可能であれば、この機能に頼ることは避けてください。

構文
--


```js
SharedArrayBuffer[Symbol.species]
```

### 返値

`get @@species` が呼び出されたコンストラクター (`this`) の値です。この返値は、新しい配列バッファーを作成するための配列バッファーのメソッドから返される値を構成するために使用されます。

解説
--

`@@species` アクセサープロパティは `SharedArrayBuffer` オブジェクトの既定のコンストラクターを返します。サブクラスのコンストラクターはこれを上書きして、コンストラクターの割り当てを変更することができます。既定の実装では、基本的に次のようになります。


```js
// 説明のための仮想的な基礎実装
class SharedArrayBuffer {
  static get [Symbol.species]() {
    return this;
  }
}
```


この多態的な実装のため、派生したサブクラスの `@@species` も既定でコンストラクター自身を返すことになります。


```js
class SubArrayBuffer extends SharedArrayBuffer {}
SubArrayBuffer[Symbol.species] === SharedArrayBuffer; // true
```


既存の配列を変更せず、新しい配列バッファーのインスタンスを返す配列バッファーのメソッド（例えば `slice()`）を呼び出すと、その配列の `constructor[@@species]` にアクセスすることになります。返されたコンストラクターは配列バッファーメソッドの返値を構築するために使用されます。

例
-

### 通常のオブジェクトにおける種

`@@species` プロパティは、既定のコンストラクター関数、つまり `SharedArrayBuffer` であれば `SharedArrayBuffer` コンストラクターが返されます。


```js
SharedArrayBuffer[Symbol.species]; // function SharedArrayBuffer()
```

### 派生オブジェクトにおける種

独自の `SharedArrayBuffer` サブクラスのインスタンス、例えば `MySharedArrayBuffer` では、その `MySharedArrayBuffer` の種は `MySharedArrayBuffer` コンストラクターになります。しかし、派生クラスのメソッドで親の `SharedArrayBuffer` オブジェクトを返すために、これを上書きしたいと思うかもしれません。


```js
class MySharedArrayBuffer extends SharedArrayBuffer {
  // 種を MySharedArrayBuffer から親である SharedArrayBuffer コンストラクターで上書きする。
  static get [Symbol.species]() {
    return SharedArrayBuffer;
  }
}
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-sharedarraybuffer-@@species |

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

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

関連情報
----

* `SharedArrayBuffer`
* `Symbol.species`
SharedArrayBuffer() コンストラクター
============================

**メモ:** `SharedArrayBuffer` は、 2018 年 1 月 5 日に Spectre への対策として、すべての主要ブラウザーで既定で無効化されました。 Chrome は、 Spectre スタイルの脆弱性から保護するためにサイトアイソレーション機能が有効になっているプラットフォームでは、 v67 で再有効化しました。

**`SharedArrayBuffer()` コンストラクター**は `SharedArrayBuffer` オブジェクトを生成し、これは `ArrayBuffer` オブジェクトと似た、汎用的な、固定長の生のバイナリーデータバッファーを表します。

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

構文
--


```js
new SharedArrayBuffer();
new SharedArrayBuffer(length);
```

### 引数

`length` 省略可

生成する配列バッファーの長さをバイト数で指定します。

### 返値

指定された長さの新しい `SharedArrayBuffer` オブジェクトです。中身は 0 で初期化されます。

例
-

### SharedArrayBuffer を生成するには常に new 演算子を使用する

`SharedArrayBuffer` コンストラクターは `new` 演算子で構築する必要があります。 `SharedArrayBuffer` コンストラクターを `new` なしで呼び出すと、 `TypeError` が発生します。


```js
var sab = SharedArrayBuffer(1024);
// TypeError: calling a builtin SharedArrayBuffer constructor
// new がない形は禁止されています
```



```js
var sab = new SharedArrayBuffer(1024);
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-sharedarraybuffer-constructor |

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

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

関連情報
----

* `Atomics`
* `ArrayBuffer`
* JavaScript の型付き配列
SharedArrayBuffer.prototype.slice()
===================================

**`SharedArrayBuffer.prototype.slice()`** メソッドは、新しい `SharedArrayBuffer` を生成し、その内容にこの `SharedArrayBuffer` のバイトを先頭位置 (含む) から末尾位置 (含まない) までをコピーして返します。先頭または末尾が負の値であった場合は、配列の先頭からではなく、末尾からの位置になります。このメソッドは `Array.prototype.slice()` と同じアルゴリズムです。

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

構文
--


```js
slice()
slice(begin)
slice(begin, end)
```

### 引数

`begin` 省略可

取り出す先頭位置を表す 0 から始まるインデックスです。

 負のインデックスを使用して、配列の末尾からのオフセットを示すことが可能です。
 `slice(-2)` は並びの最後の2つの要素を取り出します。


`begin` が undefined であった場合は、 `slice` は `0` の位置から取り出し始めます。

`end` 省略可

0 から始まるインデックスで、取り出す範囲の末尾の*前*を示します。 `slice` はここまでを取り出しますが、 `end` は含めません。

例えば、 `slice(1,4)` は2番目から4番目までの要素を取り出します（インデックスが 1, 2, 3 の要素）。

負のインデックスを使用して、配列の末尾からのオフセットを示すことが可能です。 `slice(2,-1)` は 3 番目から、並びの最後から 2 番目までの要素を取り出します。

`end` が省略されると、 `slice` は並びの最後 (`sab.byteLength`) までの範囲を取り出します。

### 返値

取り出した要素をが入った新しい `SharedArrayBuffer` です。

例
-

### slice() の使用


```js
const sab = new SharedArrayBuffer(1024);
sab.slice(); // SharedArrayBuffer { byteLength: 1024 }
sab.slice(2); // SharedArrayBuffer { byteLength: 1022 }
sab.slice(-2); // SharedArrayBuffer { byteLength: 2 }
sab.slice(0, 1); // SharedArrayBuffer { byteLength: 1 }
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-sharedarraybuffer.prototype.slice |

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

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

関連情報
----

* `SharedArrayBuffer`
* `Array.prototype.slice()`
SharedArrayBuffer.prototype.byteLength
======================================

**`byteLength`** アクセサープロパティは、`SharedArrayBuffer` の長さをバイト単位で表します。

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

解説
--

`byteLength` プロパティは、 set アクセサー関数が `undefined` であるアクセサープロパティです。つまり、このプロパティは読み取り専用です。値は共有配列が生成されたときに決定され、変更できません。

例
-

### byteLength の使用


```js
const sab = new SharedArrayBuffer(1024);
sab.byteLength; // 1024
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-sharedarraybuffer.prototype.bytelength |

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

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

関連情報
----

* `SharedArrayBuffer`
Float32Array() コンストラクター
=======================

**`Float32Array()`** は型付き配列のコンストラクターで、新しい `Float32Array` オブジェクト、すなわち 32 ビット浮動小数点数 (C 言語の `float` データ型に相当) の配列をプラットフォームのバイトオーダーで生成します。バイトオーダーを制御する必要がある場合は、代わりに `DataView` を使用してください。生成後は、オブジェクトのメソッドや、標準の配列の添字構文 (すなわち角括弧表記) を用いて配列の要素を参照することができます。

構文
--
```

new Float32Array(); // new in ES2017
new Float32Array(length);
new Float32Array(typedArray);
new Float32Array(object);
new Float32Array(buffer [, byteOffset [, length]]);
```

### 引数

`length`

`length` 引数付きで呼び出された場合、 `length` を *`BYTES_PER_ELEMENT` バイトで掛けた大きさ*で、内部の配列バッファーがメモリ内に生成され、内容がゼロになります。

`typedArray`

`typedArray` 引数は任意の型付き配列 (`Int32Array` など) で、 `typedArray` を付けて呼び出された場合、その内容が新しい型付き配列に複写されます。 `typedArray` に含まれるそれぞれの値は、新しい配列にコピーされる前に、このコンストラクターに対応する型に変換されます。新しい型付き配列の長さは、 `typedArray` 引数の長さと同じになります。

`object`

`object` 引数付きで呼び出された場合、新しい型付き配列は `TypedArray.from()` メソッドのようにして生成されます。

`buffer`, `byteOffset`, `length`

`buffer` 引数と、任意で `byteOffset` および `length` 引数をつけて呼び出された場合、新しい型付き配列のビューが作成され、そのビューが指定された `ArrayBuffer` となります。 `byteOffset` および `length` 引数は、型付き配列のビューで公開するメモリの範囲を指定します。両方が省略された場合は、 `buffer` 全体がビューとなり、 `length` のみが省略された場合は、 `buffer` の残りがビューとなります。

例
-

### Float32Array を生成するための様々な方法


```js
// From a length
var float32 = new Float32Array(2);
float32[0] = 42;
console.log(float32[0]); // 42
console.log(float32.length); // 2
console.log(float32.BYTES\_PER\_ELEMENT); // 8

// From an array
var arr = new Float32Array([21, 31]);
console.log(arr[1]); // 31

// From another TypedArray
var x = new Float32Array([21, 31]);
var y = new Float32Array(x);
console.log(y[0]); // 21

// From an ArrayBuffer
var buffer = new ArrayBuffer(32);
var z = new Float32Array(buffer, 0, 4);

// From an iterable
var iterable = (function\* () {
  yield\* [1, 2, 3];
})();
var float32 = new Float32Array(iterable);
// Float32Array[1, 2, 3]
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-typedarray-constructors |

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

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

### 互換性ノート

ECMAScript 2015 から、 `Float32Array` コンストラクターは `new` 演算子を使用して構築する必要があります。 `new` 演算子を使用せずに `Float32Array` コンストラクターを呼び出した場合、 `TypeError` が発生するようになりました。


```js
var dv = Float32Array([1, 2, 3]);
// TypeError: calling a builtin Float32Array constructor
// without new is forbidden
```



```js
var dv = new Float32Array([1, 2, 3]);
```

関連情報
----

* JavaScript typed arrays
* `ArrayBuffer`
* `DataView`