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
がサイズ変更可能かどうか、またその最大サイズを知るには、それぞれ resizable
と maxByteLength
のプロパティにアクセスすれば分かります。サイズ変更可能な 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 バイトのバッファーを作成します。
const buffer = new ArrayBuffer(8);
const view = new Int32Array(buffer);
仕様書
Specification |
---|
ECMAScript Language Specification # sec-arraybuffer-objects |
ブラウザーの互換性
BCD tables only load in the browser