ArrayBuffer

ArrayBuffer は、一般的な固定長のバイナリーデータのバッファを示すために使われるデータタイプです。ArrayBuffer の内容を直接操作することはできません。代わりにバッファを特定の形式で表現し、またバッファの内容物を読み書きするために使用される typed array objectDataView オブジェクトを作成します。

構文

new ArrayBuffer(length)

引数

length
ArrayBuffer を生成するためのバイト単位のサイズ。

戻り値

指定したサイズの新しい ArrayBuffer オブジェクト。内容物は 0 に初期化される。

例外

lengthNumber.MAX_SAFE_INTEGER (>= 2 ** 53) より大きい場合、または負の数値の場合、RangeError が発生します。

説明

ArrayBuffer コンストラクターは、与えられたバイト単位の長さの新しい ArrayBuffer を生成します。

既存のデータから ArrayBuffer を取得する

プロパティ

ArrayBuffer.length
ArrayBuffer コンストラクターの length プロパティの値は 1 です。
get ArrayBuffer[@@species]
派生オブジェクトを生成するために使用されるコンストラクター関数です。
ArrayBuffer.prototype
すべての ArrayBuffer オブジェクトへのプロパティに追加できます。

メソッド

ArrayBuffer.isView(arg)
argTypedArray オブジェクト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 を返し、これにはこの ArrayBufferbegin から 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 (ECMA-262)
ArrayBuffer の定義
現行の標準  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
ArrayBufferChrome 完全対応 7Edge 完全対応 12Firefox 完全対応 4IE 完全対応 10Opera 完全対応 11.6Safari 完全対応 5.1WebView Android 完全対応 4Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 4.2Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.10
ArrayBuffer() constructorChrome 完全対応 7Edge 完全対応 12Firefox 完全対応 4IE 完全対応 10Opera 完全対応 11.6Safari 完全対応 5.1WebView Android 完全対応 4Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 4.2Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.10
byteLengthChrome 完全対応 7Edge 完全対応 12Firefox 完全対応 4IE 完全対応 10Opera 完全対応 11.6Safari 完全対応 5.1WebView Android 完全対応 4Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 4.2Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.10
isViewChrome 完全対応 32Edge 完全対応 12Firefox 完全対応 29IE 完全対応 11Opera 完全対応 19Safari 完全対応 7WebView Android 完全対応 ≤37Chrome Android 完全対応 32Firefox Android 完全対応 29Opera Android 完全対応 19Safari iOS 完全対応 7Samsung Internet Android 完全対応 2.0nodejs 完全対応 4.0.0
sliceChrome 完全対応 17Edge 完全対応 12Firefox 完全対応 12
補足
完全対応 12
補足
補足 The non-standard ArrayBuffer.slice() method has been removed in Firefox 53 (but the standardized version ArrayBuffer.prototype.slice() is kept.
IE 完全対応 11Opera 完全対応 12.1Safari 完全対応 6WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 14
補足
完全対応 14
補足
補足 The non-standard ArrayBuffer.slice() method has been removed in Firefox 53 (but the standardized version ArrayBuffer.prototype.slice() is kept.
Opera Android 完全対応 12.1Safari iOS 完全対応 6Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.12
@@speciesChrome 完全対応 51Edge 完全対応 13Firefox 完全対応 48IE 未対応 なしOpera 完全対応 38Safari 完全対応 10WebView Android 完全対応 51Chrome Android 完全対応 51Firefox Android 完全対応 48Opera Android 完全対応 41Safari iOS 完全対応 10Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.5.0
完全対応 6.5.0
完全対応 6.0.0
無効
無効 From version 6.0.0: this feature is behind the --harmony runtime flag.

凡例

完全対応  
完全対応
未対応  
未対応
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

互換に関する注記

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);

関連項目