ArrayBuffer は、一般的な固定長のバイナリーデータのバッファを示すために使われるデータタイプです。ArrayBuffer の内容を直接操作することはできません。代わりにバッファを特定の形式で表現し、またバッファの内容物を読み書きするために使用される typed array object か DataView オブジェクトを作成します。
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
構文
new ArrayBuffer(length)
引数
length- ArrayBuffer を生成するためのバイト単位のサイズ。
戻り値
指定したサイズの新しい ArrayBuffer オブジェクト。内容物は 0 に初期化される。
例外
length が Number.MAX_SAFE_INTEGER (>= 2 ** 53) より大きい場合、または負の数値の場合、RangeError が発生します。
説明
ArrayBuffer コンストラクターは、与えられたバイト単位の長さの新しい ArrayBuffer を生成します。
既存のデータから ArrayBuffer を取得する
プロパティ
ArrayBuffer.lengthArrayBufferコンストラクターの length プロパティの値は 1 です。get ArrayBuffer[@@species]- 派生オブジェクトを生成するために使用されるコンストラクター関数です。
ArrayBuffer.prototype- すべての
ArrayBufferオブジェクトへのプロパティに追加できます。
メソッド
ArrayBuffer.isView(arg)argが TypedArray オブジェクト かDataViewのいずれかのような ArrayBuffer ビューの場合はtrueを、そうでなければfalseを返します。ArrayBuffer.transfer(oldBuffer [, newByteLength])-
内容が
oldBufferのデータから取られて、newByteLengthによって切り捨てられるか、ゼロ拡張された新しいArrayBufferを返します。
インスタンス
すべての ArrayBuffer インスタンスは ArrayBuffer.prototype を継承します。
プロパティ
- ArrayBuffer.prototype.constructor
- オブジェクトのプロトタイプを生成する関数を指定します。既定値は標準で組み込まれた
ArrayBufferコンストラクターです。 ArrayBuffer.prototype.byteLength読取専用- 配列のバイト単位の大きさです。これは、配列が構築されるときに設定され、変更されません。読み取り専用です。
メソッド
ArrayBuffer.prototype.slice()- 新しい
ArrayBufferを返し、これにはこのArrayBufferのbeginからendの手前までのバイト単位の内容がコピーされます。beginまたはendのどちらかが負の数の場合、これは配列の先頭からではなく、末尾からのインデックスを表します。
ArrayBuffer.slice()ArrayBuffer.prototype.slice()と同じ機能を持ちます。
例
この例では、バッファを参照する Int32Array ビューで 8 バイトのバッファを生成しています:
var buffer = new ArrayBuffer(8); var view = new Int32Array(buffer);
仕様
| 仕様 | ステータス | コメント |
|---|---|---|
| Typed Array Specification | 廃止された | ECMAScript 6 に取って代わられました。 |
| ECMAScript 2015 (6th Edition, ECMA-262) ArrayBuffer の定義 |
標準 | ECMA 標準の初期定義です。new が必要になるように指定されました。 |
| ECMAScript Latest Draft (ECMA-262) ArrayBuffer の定義 |
ドラフト |
ブラウザー実装状況
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ArrayBuffer | Chrome 完全対応 7 | Edge 完全対応 12 | Firefox 完全対応 4 | IE 完全対応 10 | Opera 完全対応 11.6 | Safari 完全対応 5.1 | WebView Android 完全対応 4 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 12 | Safari iOS 完全対応 4.2 | Samsung Internet Android 完全対応 あり | nodejs 完全対応 あり |
byteLength | Chrome 完全対応 7 | Edge 完全対応 12 | Firefox 完全対応 4 | IE 完全対応 10 | Opera 完全対応 11.6 | Safari 完全対応 5.1 | WebView Android 完全対応 4 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 12 | Safari iOS 完全対応 4.2 | Samsung Internet Android 完全対応 あり | nodejs 完全対応 あり |
isView | Chrome 完全対応 32 | Edge 完全対応 12 | Firefox 完全対応 29 | IE 完全対応 11 | Opera 完全対応 あり | Safari 完全対応 あり | WebView Android 完全対応 ≤37 | Chrome Android 完全対応 32 | Firefox Android 完全対応 29 | Opera Android 完全対応 あり | Safari iOS 完全対応 あり | Samsung Internet Android 完全対応 2.0 | nodejs 完全対応 あり |
ArrayBuffer() without new throws | Chrome 完全対応 7 | Edge 完全対応 14 | Firefox 完全対応 44 | IE 未対応 なし | Opera 完全対応 あり | Safari 完全対応 5.1 | WebView Android 完全対応 ≤37 | Chrome Android 完全対応 18 | Firefox Android 完全対応 44 | Opera Android 完全対応 あり | Safari iOS 完全対応 5 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.12 |
prototype | Chrome 完全対応 7 | Edge 完全対応 12 | Firefox 完全対応 4 | IE 完全対応 10 | Opera 完全対応 11.6 | Safari 完全対応 5.1 | WebView Android 完全対応 4 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 12 | Safari iOS 完全対応 4.2 | Samsung Internet Android 完全対応 あり | nodejs 完全対応 あり |
slice | Chrome 完全対応 17 | Edge 完全対応 12 | Firefox
完全対応
12
| IE 完全対応 11 | Opera 完全対応 あり | Safari 完全対応 6 | WebView Android 完全対応 ≤37 | Chrome Android 完全対応 18 | Firefox Android
完全対応
14
| Opera Android 完全対応 あり | Safari iOS 完全対応 6 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 あり |
transfer | Chrome 未対応 なし | Edge 未対応 なし | Firefox 未対応 なし | IE 未対応 なし | Opera 未対応 なし | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 未対応 なし | Firefox Android 未対応 なし | Opera Android 未対応 なし | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
@@species | Chrome 完全対応 51 | Edge 完全対応 13 | Firefox 完全対応 48 | IE 未対応 なし | Opera 完全対応 38 | Safari ? | WebView Android 完全対応 51 | Chrome Android 完全対応 51 | Firefox Android 完全対応 48 | Opera Android 完全対応 41 | Safari iOS ? | Samsung Internet Android 完全対応 5.0 | nodejs
完全対応
6.5.0
|
凡例
- 完全対応
- 完全対応
- 未対応
- 未対応
- 実装状況不明
- 実装状況不明
- 実験的。動作が変更される可能性があります。
- 実験的。動作が変更される可能性があります。
- 非標準。ブラウザー間の互換性が低い可能性があります。
- 非標準。ブラウザー間の互換性が低い可能性があります。
- 実装ノートを参照してください。
- 実装ノートを参照してください。
- ユーザーが明示的にこの機能を有効にしなければなりません。
- ユーザーが明示的にこの機能を有効にしなければなりません。
互換に関する注記
ECMAScript 2015 から、ArrayBuffer コンストラクターは new 演算子を必要とするようになりました。new なしで関数として ArrayBuffer コンストラクターを呼び出すと、TypeError をスローするようになっています。
var dv = ArrayBuffer(10); // TypeError: calling a builtin ArrayBuffer constructor // without new is forbidden
var dv = new ArrayBuffer(10);