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.

* Some parts of this feature may have varying levels of support.

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® 2025 Language Specification
# sec-arraybuffer-objects

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
ArrayBuffer
[Symbol.species]
ArrayBuffer() constructor
maxByteLength option
byteLength
detached
isView
maxByteLength
resizable
resize
slice
transfer
transferToFixedLength

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

関連情報