DataView

Die DataView Ansicht unterstützt eine Low-Level Schnittstelle für das Lesen und Schreiben von mehrere Zahlentypen in einem ArrayBuffer. Diese Ansicht ist unabhängig von den Plattform Byte-Reihenfolgen.

Syntax

new DataView(buffer [, byteOffset [, byteLength]])

Parameter

buffer
Ein existierender ArrayBuffer oder SharedArrayBuffer , welche als Speicher für das neue DataView Objekt dient.
byteOffset Optional
Das Offset in Bytes, welches auf das erste Byte in dem spezifizierten Buffer für die neue Ansicht referenziert. Wenn dieser Parameter nicht angegeben ist, wird das erste Byte des Buffers als Startpunkt benutzt.
byteLength Optional
Die Anzahl der Elemente in dem Byte Array. Wenn es nicht angegeben wird, wird die Länge des Buffers benutzt.

Rückgabewert

Ein neues DataView Objekt welches den spezifizierten Datenpuffer (Buffer) repräsentiert.

Exceptions

RangeError
Wird erzeugt, wenn byteOffset oder byteLength Größe als der Puffer (Buffers) sind

Beschreibung

Byte-Reihenfolge

Zahlenformate mit mehreren Bytes werden im Speicher verschieden dargestellt, je nachdem welche Maschinenarchitektur genutzt wird (siehe Endianness für weitere Erklärungen). DataView bietet explizit die Kontrolle über den Zugriff auf die Zahlen unabhängig von der Plattformarchitektur-Byte-Reihenfolge.

var littleEndian = (function() {
  var buffer = new ArrayBuffer(2);
  new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
  // Int16Array benutzt die Plattform Byte-Reihenfolge.
  return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true oder false

Eigenschaften

Alle DataView Instanzen erben von DataView.prototype und erlauben das Hinzufügen von Eigenschaften zu allen DataView Objekten

DataView.prototype.constructor
Spezifiziert die Funktion, die ein Objekt des Prototypen erstellt. Der initialwert ist der Standard eingebaute DataView Konstruktor
DataView.prototype.buffer Schreibgeschützt
Der ArrayBuffer, der von dieser Ansicht repräsentiert wird. Wird bei der Erstellung erzeugt und deswegen kann nur lesend darauf zugegriffen werden.
DataView.prototype.byteLength Schreibgeschützt
Die Länge (in Bytes) von dieser Ansicht, von Beginn des ArrayBuffer. Wird bei der Erstellung erzeugt und deswegen kann nur lesend darauf zugegriffen werden.
DataView.prototype.byteOffset Schreibgeschützt
Das Offset (in Bytes) von dieser Ansicht, von Beginn des ArrayBuffer. Wird bei der Erstellung erzeugt und deswegen kann nur lesend darauf zugegriffen werden.

Methoden

Lesend

DataView.prototype.getInt8()
Gibt eine 8-Bit ganze Zahl mit Vorzeichen (byte) eines spezifizierten Byte-Offsets vom Start der Ansicht zurück.
DataView.prototype.getUint8()
Gibt eine 8-Bit vorzeichenlose ganze Zahl (unsigned byte) eines spezifizierten Byte-Offsets vom Start der Ansicht zurück.
DataView.prototype.getInt16()
Gibt eine 16-Bit ganze Zahl mit Vorzeichen (short) eines spezifizierten Byte-Offsets vom Start der Ansicht zurück.
DataView.prototype.getUint16()
Gibt eine 16-Bit vorzeichenlose ganze Zahl (unsigned short) eines spezifizierten Byte-Offsets vom Start der Ansicht zurück.
DataView.prototype.getInt32()
Gibt eine 32-Bit ganze Zahl mit Vorzeichen (long) eines spezifizierten Byte-Offsets vom Start der Ansicht zurück.
DataView.prototype.getUint32()
Gibt eine 32-Bit vorzeichenlose ganze Zahl (unsigned long) eines spezifizierten Byte-Offsets vom Start der Ansicht zurück.
DataView.prototype.getFloat32()
Gibt eine 32-Bit Gleitkommazahl mit Vorzeichen (float) eines spezifizierten Byte-Offsets vom Start der Ansicht zurück
DataView.prototype.getFloat64()
Gibt eine 64-Bit Gleitkommazahl mit Vorzeichen (double) eines spezifizierten Byte-Offsets vom Start der Ansicht zurück

Schreibend

DataView.prototype.setInt8()
Speichert eine ganze 8-Bit Zahl mit Vorzeichen (byte) an einem spezifizierten Offset vom Start der Ansicht.
DataView.prototype.setUint8()
Speichert eine ganze vorzeichenlose 8-Bit Zahl (unsigned byte) an einem spezifizierten Offset vom Start der Ansicht.
DataView.prototype.setInt16()
Speichert eine ganze 16-Bit Zahl mit Vorzeichen (short) an einem spezifizierten Offset vom Start der Ansicht.
DataView.prototype.setUint16()
Speichert eine ganze vorzeichenlose 16-Bit Zahl (unsigned short) an einem spezifizierten Offset vom Start der Ansicht.
DataView.prototype.setInt32()
Speichert eine ganze 32-Bit Zahl mit Vorzeichen (long) an einem spezifizierten Offset vom Start der Ansicht.
DataView.prototype.setUint32()
Speichert eine ganze vorzeichenlose 32-Bit Zahl (unsigned long) an einem spezifizierten Offset vom Start der Ansicht.
DataView.prototype.setFloat32()
Speichert eine 32-Bit Gleitkommazahl mit Vorzeichen (float) an einem spezifizierten Offset vom Start der Ansicht.
DataView.prototype.setFloat64()
Speichert eine 64-Bit Gleitkommazahl mit Vorzeichen (double) an einem spezifizierten Offset vom Start der Ansicht.

Beispiele

var buffer = new ArrayBuffer(16);
var dv = new DataView(buffer, 0);

dv.setInt16(1, 42);
dv.getInt16(1); //42

Spezifikationen

Spezifikation Status Kommentar
Typed Array Specification Veraltet Abgelöst von ECMAScript 6
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'DataView' in dieser Spezifikation.
Standard Initiale Definition in einem ECMA Standard
ECMAScript (ECMA-262)
Die Definition von 'DataView' in dieser Spezifikation.
Lebender Standard  

Browserkompatibilität

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidFirefox für AndroidOpera für AndroidSafari auf iOSSamsung InternetNode.js
DataViewChrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
DataView() constructorChrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
bufferChrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
byteLengthChrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
byteOffsetChrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
getBigInt64Chrome Vollständige Unterstützung 67Edge Vollständige Unterstützung 79Firefox Vollständige Unterstützung 68IE Keine Unterstützung NeinOpera Vollständige Unterstützung 54Safari Keine Unterstützung NeinWebView Android Vollständige Unterstützung 67Chrome Android Vollständige Unterstützung 67Firefox Android Vollständige Unterstützung 68Opera Android Vollständige Unterstützung 48Safari iOS Keine Unterstützung NeinSamsung Internet Android Vollständige Unterstützung 9.0nodejs Vollständige Unterstützung 10.4.0
getBigUint64Chrome Vollständige Unterstützung 67Edge Vollständige Unterstützung 79Firefox Vollständige Unterstützung 68IE Keine Unterstützung NeinOpera Vollständige Unterstützung 54Safari Keine Unterstützung NeinWebView Android Vollständige Unterstützung 67Chrome Android Vollständige Unterstützung 67Firefox Android Vollständige Unterstützung 68Opera Android Vollständige Unterstützung 48Safari iOS Keine Unterstützung NeinSamsung Internet Android Vollständige Unterstützung 9.0nodejs Vollständige Unterstützung 10.4.0
getFloat32Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
getFloat64Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
getInt16Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
getInt32Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
getInt8Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
getUint16Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
getUint32Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
getUint8Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
setBigInt64Chrome Vollständige Unterstützung 67Edge Vollständige Unterstützung 79Firefox Vollständige Unterstützung 68IE Keine Unterstützung NeinOpera Vollständige Unterstützung 54Safari Keine Unterstützung NeinWebView Android Vollständige Unterstützung 67Chrome Android Vollständige Unterstützung 67Firefox Android Vollständige Unterstützung 68Opera Android Vollständige Unterstützung 48Safari iOS Keine Unterstützung NeinSamsung Internet Android Vollständige Unterstützung 9.0nodejs Vollständige Unterstützung 10.4.0
setBigUint64Chrome Vollständige Unterstützung 67Edge Vollständige Unterstützung 79Firefox Vollständige Unterstützung 68IE Keine Unterstützung NeinOpera Vollständige Unterstützung 54Safari Keine Unterstützung NeinWebView Android Vollständige Unterstützung 67Chrome Android Vollständige Unterstützung 67Firefox Android Vollständige Unterstützung 68Opera Android Vollständige Unterstützung 48Safari iOS Keine Unterstützung NeinSamsung Internet Android Vollständige Unterstützung 9.0nodejs Vollständige Unterstützung 10.4.0
setFloat32Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
setFloat64Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
setInt16Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
setInt32Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
setInt8Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
setUint16Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
setUint32Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10
setUint8Chrome Vollständige Unterstützung 9Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 15IE Vollständige Unterstützung 10Opera Vollständige Unterstützung 12.1Safari Vollständige Unterstützung 5.1WebView Android Vollständige Unterstützung 4Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 15Opera Android Vollständige Unterstützung 12.1Safari iOS Vollständige Unterstützung 4.2Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.10

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung

Bemerkungen zur Kompatibilität

Mit dem Start von Firefox 40 wird der new Operator benötigt um eine DataView zu erstellen. Der Aufruf von DataView() als Funktion ohne new erzeugt jetzt einen TypeError.

var dv = DataView(buffer, 0); 
// TypeError: Das Aufrufen des DataView-Konstruktors ohne new ist verboten
var dv = new DataView(buffer, 0);

Siehe auch