ArrayBuffer

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

ArrayBuffer オブジェクトは、一般的な生のバイナリーデータバッファーを表現するために使用します。

これはバイトの配列で、他の言語ではよく「バイト配列」と呼ばれます。ArrayBuffer の内容を直接操作することはできません。代わりに、バッファーを特定の形式で表現する型付き配列オブジェクトまたは DataView オブジェクトのいずれかを作成して、バッファーの内容を読み書きします。

ArrayBuffer() コンストラクターは、指定した長さの ArrayBuffer をバイト単位で作成します。既存のデータから、たとえば、Base64 文字列やローカルファイルからから配列バッファーを取得することもできます。

ArrayBuffer移譲可能オブジェクトです。

解説

ArrayBuffer のサイズ変更

ArrayBuffer オブジェクトは maxByteLength オプションを指定して ArrayBuffer() コンストラクターを呼び出すことで、サイズを変更することができるようになります。ArrayBuffer がサイズ変更可能かどうか、またその最大サイズを知るには、それぞれ resizablemaxByteLength のプロパティにアクセスすれば分かります。サイズ変更可能な ArrayBuffer には、 resize() を呼び出して新しいサイズを割り当てることができます。新しいバイトは 0 に初期化されます。

これらの機能により、ArrayBuffer のサイズ変更がより効率的になります。そうしないと、新しいサイズのバッファーのコピーを持たなければなりません。また、この点で JavaScript が WebAssembly と同等になります(WASM のリニアメモリーは WebAssembly.Memory.prototype.grow() でサイズ変更が可能です)。

コンストラクター

ArrayBuffer()

新しい ArrayBuffer オブジェクトを作成します。

静的プロパティ

get ArrayBuffer[@@species]

派生オブジェクトを作成する際に使用するコンストラクター関数です。

静的メソッド

ArrayBuffer.isView()

arg型付き配列オブジェクトDataView のような ArrayBuffer ビューのいずれかである場合は true を返します。それ以外の場合は false を返します。

インスタンスプロパティ

これらのプロパティは ArrayBuffer.prototype で定義されており、すべての ArrayBuffer インスタンスで共有されます。

ArrayBuffer.prototype.byteLength

ArrayBufferのサイズをバイト単位で指定します。これは配列の構築時に設定され、ArrayBuffer がサイズ変更可能な場合にのみ ArrayBuffer.prototype.resize() メソッドを使用して変更することができます。

ArrayBuffer.prototype.maxByteLength Experimental

読み取り専用で、ArrayBuffer のサイズを変更できる最大長をバイト数で指定します。これは配列が構築される際に設定され、変更することはできません。

ArrayBuffer.prototype.resizable Experimental

読み取り専用。ArrayBuffer のサイズを変更できる場合は true を、変更できない場合は false を返します。

ArrayBuffer.prototype.constructor

インスタンスオブジェクトを作成したコンストラクター関数。ArrayBuffer インスタンスの場合、初期値は ArrayBuffer コンストラクターです。

ArrayBuffer.prototype[@@toStringTag]

@@toStringTag プロパティの初期値は文字列 "ArrayBuffer" です。このプロパティは Object.prototype.toString() で使用されます。

インスタンスメソッド

ArrayBuffer.prototype.slice()

新しい ArrayBuffer に、begin (の位置) から end (の手前) までのバイトのコピーを入れて返します。begin または end のどちらかが負の値の場合は、配列の先頭からではなく、配列の末尾からの位置を指します。

ArrayBuffer.prototype.resize() Experimental

ArrayBuffer を指定したサイズ(バイト単位)にサイズ変更します。

ArrayBuffer の作成

この例では、バッファーを参照する Int32Array ビューを持つ 8 バイトのバッファーを作成します。

js
const buffer = new ArrayBuffer(8);
const view = new Int32Array(buffer);

仕様書

Specification
ECMAScript Language Specification
# sec-arraybuffer-objects

ブラウザーの互換性

BCD tables only load in the browser

関連情報