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, der als Speicher für das neueDataViewObjekt dient. byteOffsetOptional- 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.
byteLengthOptional- 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.
Auftretende Errors
RangeError- Wird erzeugt, wenn
byteOffsetoderbyteLengthGröß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
- DataView.length
- Die
DataViewKonstruktorlängen Eigenschaft hat den Wert 3. DataView.prototype- Erlaubt es Eigenschaften für alle
DataViewObjekte hinzuzufügen oder zu modifizieren.
DataView Instanzen
Alle DataView Instanzen erben von DataView.prototype.
Eigenschaften
- DataView.prototype.constructor
- Spezifiziert die Funktion, die ein Objekt des Prototypen erstellt. Der initialwert ist der Standard eingebaute
DataViewKonstruktor DataView.prototype.bufferRead only- Der
ArrayBuffer, der von dieser Ansicht repräsentiert wird. Wird bei der Erstellung erzeugt und deswegen kann nur lesend darauf zugegriffen werden. DataView.prototype.byteLengthRead only- 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.byteOffsetRead only- 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 2017 Draft (ECMA-262) Die Definition von 'DataView' in dieser Spezifikation. |
Entwurf |
Browserkompatibilität
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | 9.0 | 15.0 (15.0) | 10 | 12.1 | 5.1 |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | 4.0 | (Ja) | 15.0 (15) | ? | 12.0 | 4.2 |
Firefox-spezifische Bemerkungen
Mit dem Start von Gecko / SpiderMonkey 40 (Firefox 40 / Thunderbird 40 / SeaMonkey 2.37) 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
- jDataView: JavaScript-Bibliothek welche Polyfills und Erweiterungen für die
DataViewAPI in allen Browdern und Node.js zur verfügung stellt.