Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
* Some parts of this feature may have varying levels of support.
ArrayBuffer オブジェクトは、一般的な生のバイナリーデータバッファーを表現するために使用します。
これはバイトの配列で、他の言語ではよく「バイト配列」と呼ばれます。ArrayBuffer の内容を直接操作することはできません。代わりに、バッファーを特定の形式で表現する型付き配列オブジェクトまたは DataView オブジェクトのいずれかを作成して、バッファーの内容を読み書きします。
ArrayBuffer() コンストラクターは、指定した長さの ArrayBuffer をバイト単位で作成します。既存のデータから、たとえば、Base64 文字列やローカルファイルから配列バッファーを取得することもできます。
ArrayBuffer は移譲可能オブジェクトです。
ArrayBuffer オブジェクトは maxByteLength オプションを指定して ArrayBuffer() コンストラクターを呼び出すことで、サイズを変更することができるようになります。ArrayBuffer がサイズ変更可能かどうか、またその最大サイズを知るには、それぞれ resizable と maxByteLength のプロパティにアクセスすれば分かります。サイズ変更可能な ArrayBuffer には、 resize() を呼び出して新しいサイズを割り当てることができます。新しいバイトは 0 に初期化されます。
これらの機能により、ArrayBuffer のサイズ変更がより効率的になります。そうしないと、新しいサイズのバッファーのコピーを持たなければなりません。また、この点で JavaScript が WebAssembly と同等になります(WASM の線形メモリーは WebAssembly.Memory.prototype.grow() でサイズ変更が可能です)。
ArrayBuffer オブジェクトは、ウェブワーカーやサービスワーカーなど、異なる実行コンテキスト間で構造化クローンアルゴリズムを使用して移譲することができます。これは、ArrayBuffer を移譲可能オブジェクトとして Worker.postMessage() または ServiceWorker.postMessage() の呼び出しに渡すことで実現されます。純粋な JavaScript では、 transfer() または transferToFixedLength() メソッドを使用して、ある ArrayBuffer から他へメモリーの所有権を移すこともできます。
ArrayBuffer が移譲されると、元のコピーは分離状態になります。これは、そのコピーが使用できなくなるということです。いかなる時点においても、基盤となるメモリーに実際にアクセスできる ArrayBuffer のコピーは一つだけです。分離されたバッファーには以下のような挙動になります。
ArrayBuffer が分離されているかどうかは、 detached プロパティで確認することができます。
新しい ArrayBuffer オブジェクトを作成します。
派生オブジェクトを作成する際に使用するコンストラクター関数です。
arg が型付き配列オブジェクトや DataView のような ArrayBuffer ビューのいずれかである場合は true を返します。それ以外の場合は false を返します。
これらのプロパティは ArrayBuffer.prototype で定義されており、すべての ArrayBuffer インスタンスで共有されます。
ArrayBuffer.prototype.byteLengthArrayBufferのサイズをバイト単位で指定します。これは配列の構築時に設定され、ArrayBuffer がサイズ変更可能な場合にのみ ArrayBuffer.prototype.resize() メソッドを使用して変更することができます。
ArrayBuffer.prototype.constructorインスタンスオブジェクトを作成したコンストラクター関数。ArrayBuffer インスタンスの場合、初期値は ArrayBuffer コンストラクターです。
ArrayBuffer.prototype.detached読み取り専用です。ArrayBuffer が既に分離されている(移譲済みである)場合は true、そうでなければ false を返し案す。
ArrayBuffer.prototype.maxByteLength読み取り専用で、ArrayBuffer のサイズを変更できる最大長をバイト数で指定します。これは配列が構築される際に設定され、変更することはできません。
ArrayBuffer.prototype.resizable読み取り専用です。ArrayBuffer のサイズを変更できる場合は true を、変更できない場合は false を返します。
ArrayBuffer.prototype[Symbol.toStringTag][Symbol.toStringTag] プロパティの初期値は文字列 "ArrayBuffer" です。このプロパティは Object.prototype.toString() で使用されます。
ArrayBuffer を指定したサイズ(バイト単位)にサイズ変更します。
ArrayBuffer.prototype.slice()新しい ArrayBuffer に、begin (の位置)から end (の手前)までのバイトのコピーを入れて返します。begin または end のどちらかが負の値の場合は、配列の先頭からではなく、配列の末尾からの位置を指します。
ArrayBuffer.prototype.transfer()このバッファーと同じバイト内容を持つ新しい ArrayBuffer を作成し、その後このバッファーを切り離します。
ArrayBuffer.prototype.transferToFixedLength()このバッファーと同じバイト内容を持つ、新しいリサイズ不可能な ArrayBuffer を作成し、その後でこのバッファーを分離します。
この例では、バッファーを参照する Int32Array ビューを持つ 8 バイトのバッファーを作成します。
| ECMAScript® 2027 Language Specification # sec-arraybuffer-objects |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年11月29日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.