DataView
ビューは ArrayBuffer
の多様な数値型を、プラットフォームのエンディアンに関係なく読み書きするための低レベルインターフェイスを提供します。
構文
new DataView(buffer [, byteOffset [, byteLength]])
引数
buffer
- 新たな
DataView
のための記憶領域として用いる、既存のArrayBuffer
です。 byteOffset
Optional- 指定されたバッファで、新たなビューが参照する最初のバイト位置を示すオフセットを、バイト単位で示します。省略した場合、バッファのビューは最初のバイト位置から参照し始めます。
byteLength
Optional- バイト配列内の要素数です。省略した場合、ビューの長さはバッファの長さと同じになります。
戻り値
指定されたデータバッファを示す、新たな DataView
オブジェクトを返します。
発生するエラー
RangeError
- 指定されたビューの
byteOffset
およびbyteLength
の結果が、バッファの終端を超えた場合に発生します。
説明
エンディアン
多バイトの数値形式は、マシンアーキテクチャによってメモリ内での表現が異なります。これは Endianness で説明しています。DataView のアクセサは、プラットフォームアーキテクチャのエンディアンに関係なくデータにアクセスする方法を明確に制御する手段を提供します。
var littleEndian = (function() { var buffer = new ArrayBuffer(2); new DataView(buffer).setInt16(0, 256, true /* リトルエンディアン */); // Int16Array はプラットフォームのエンディアンを使用する return new Int16Array(buffer)[0] === 256; })(); console.log(littleEndian); // true または false
プロパティ
- DataView.length
DataView
コンストラクタの length プロパティの値は 3 です。DataView.prototype
- すべての
DataView
オブジェクトにプロパティを追加できます。
DataView
インスタンス
すべての DataView
インスタンスは DataView.prototype
から継承します。
プロパティ
- DataView.prototype.constructor
- オブジェクトのプロトタイプを生成する関数を指定します。初期値は標準ビルトイン
DataView
コンストラクタです。 DataView.prototype.buffer
読取専用- このビューによって参照される
ArrayBuffer
。構築時に設定されます。読取専用 DataView.prototype.byteLength
読取専用ArrayBuffer
の開始位置からこのビューの(バイト単位の)長さ。構築時に設定され、読取専用DataView.prototype.byteOffset
読取専用ArrayBuffer
の開始位置からこのビューの(バイト単位の)オフセット。構築時に設定され、読取専用
メソッド
Read
DataView.prototype.getInt8()
- ビューの開始位置から指定されたバイト単位のオフセットで符号付き8ビット整数値(byte)を取得します。
DataView.prototype.getUint8()
- ビューの開始位置から指定されたバイト単位のオフセットで符号無し8ビット整数値(unsigned byte) を取得します。
DataView.prototype.getInt16()
- ビューの開始位置から指定されたバイト単位のオフセットで符号付き16ビット整数値(short)を取得します。
DataView.prototype.getUint16()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号無し16ビット整数値(unsigned short)を取得します。
DataView.prototype.getInt32()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号あり32ビット整数値(long)を取得します。
DataView.prototype.getUint32()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号無し32ビット整数値(unsigned long)を取得します。
DataView.prototype.getFloat32()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号あり32ビット浮動小数点(float)を取得します。
DataView.prototype.getFloat64()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号あり64ビット浮動小数点(double)を取得します。
Write
DataView.prototype.setInt8()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号あり8ビット整数値(byte)を格納します。
DataView.prototype.setUint8()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号なし8ビット整数値(unsigned byte)を格納します。
DataView.prototype.setInt16()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号あり16ビット整数値(short)を格納します。
DataView.prototype.setUint16()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号無し16ビット整数値(unsigned short)を格納します。
DataView.prototype.setInt32()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号あり32ビット整数値(long)を格納します。
DataView.prototype.setUint32()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号無し32ビット整数値(unsigned long)を格納します。
DataView.prototype.setFloat32()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号あり32ビット浮動小数点(float)を格納します。
DataView.prototype.setFloat64()
- ビューの開始位置からの指定されたバイト単位のオフセットで符号あり64ビット浮動小数点(double)を格納します。
例
var buffer = new ArrayBuffer(16); var dv = new DataView(buffer, 0); dv.setInt16(1, 42); dv.getInt16(1); //42
仕様
仕様書 | 策定状況 | コメント |
---|---|---|
Typed Array Specification | 廃止された | ECMAScript 6 に置き換え |
ECMAScript 2015 (6th Edition, ECMA-262) DataView の定義 |
標準 | ECMA 標準では最初の定義 |
ECMAScript 2017 Draft (ECMA-262) DataView の定義 |
ドラフト |
ブラウザ実装状況
機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本サポート | 9.0 | 15.0 (15.0) | 10 | 12.1 | 5.1 |
機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
基本サポート | 4.0 | (有) | 15.0 (15) | ? | 12.0 | 4.2 |
Firefox に関する注記
Gecko / SpiderMonkey 40 (Firefox 40 / Thunderbird 40 / SeaMonkey 2.37) より、DataView
は new
演算子を使用して生成しなければなりません。new
を伴わずに DataView()
を関数として呼び出すと、TypeError
が発生するようになりました。
var dv = DataView(buffer, 0); // TypeError: calling a builtin DataView constructor without new is forbidden
var dv = new DataView(buffer, 0);
関連情報
- jDataView: JavaScript library that polyfills and extends the
DataView
API to all browsers and Node.js.