DataView

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Die DataView-Ansicht bietet eine niedrigstufige Schnittstelle zum Lesen und Schreiben mehrerer Zahlentypen in einem binären ArrayBuffer, ohne sich um die Endianness der Plattform kümmern zu müssen.

Beschreibung

Endianness

Mehrbyte-Zahlenformate werden je nach Maschinenarchitektur im Speicher unterschiedlich dargestellt — siehe Endianness für eine Erklärung. DataView-Accessoren bieten explizite Kontrolle darüber, wie auf Daten zugegriffen wird, unabhängig von der Endianness des ausführenden Computers. Zum Beispiel ist der WebAssembly-Speicher immer im Little-Endian-Format, daher sollten Sie DataView anstelle von typisierten Arrays verwenden, um Mehrbyte-Werte zu lesen und zu schreiben. Sehen Sie sich WebAssembly.Memory für ein Beispiel an.

js
const littleEndian = (() => {
  const buffer = new ArrayBuffer(2);
  new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
  // Int16Array uses the platform's endianness.
  return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true or false

Note: DataView liest und schreibt standardmäßig im Big-Endian-Format, aber die meisten Plattformen verwenden Little-Endian.

Konstruktor

DataView()

Erstellt ein neues DataView-Objekt.

Instanz-Eigenschaften

Diese Eigenschaften sind auf DataView.prototype definiert und werden von allen DataView-Instanzen gemeinsam genutzt.

DataView.prototype.buffer

Der von dieser Ansicht referenzierte ArrayBuffer. Festgelegt zum Zeitpunkt der Konstruktion und daher nur lesbar.

DataView.prototype.byteLength

Die Länge (in Bytes) dieser Ansicht. Festgelegt zum Zeitpunkt der Konstruktion und daher nur lesbar.

DataView.prototype.byteOffset

Der Versatz (in Bytes) dieser Ansicht vom Beginn ihres ArrayBuffer. Festgelegt zum Zeitpunkt der Konstruktion und daher nur lesbar.

DataView.prototype.constructor

Die Konstrukturfunktion, die das Instanzobjekt erstellt hat. Für DataView-Instanzen ist der Anfangswert der DataView-Konstruktor.

DataView.prototype[Symbol.toStringTag]

Der Anfangswert der [Symbol.toStringTag]-Eigenschaft ist der String "DataView". Diese Eigenschaft wird in Object.prototype.toString() verwendet.

Instanz-Methoden

DataView.prototype.getBigInt64()

Liest 8 Bytes ab dem angegebenen Byte-Versatz dieses DataView und interpretiert sie als 64-Bit-Ganzzahl mit Vorzeichen.

DataView.prototype.getBigUint64()

Liest 8 Bytes ab dem angegebenen Byte-Versatz dieses DataView und interpretiert sie als 64-Bit-Ganzzahl ohne Vorzeichen.

DataView.prototype.getFloat16()

Liest 2 Bytes ab dem angegebenen Byte-Versatz dieses DataView und interpretiert sie als 16-Bit-Gleitkommazahl.

DataView.prototype.getFloat32()

Liest 4 Bytes ab dem angegebenen Byte-Versatz dieses DataView und interpretiert sie als 32-Bit-Gleitkommazahl.

DataView.prototype.getFloat64()

Liest 8 Bytes ab dem angegebenen Byte-Versatz dieses DataView und interpretiert sie als 64-Bit-Gleitkommazahl.

DataView.prototype.getInt16()

Liest 2 Bytes ab dem angegebenen Byte-Versatz dieses DataView und interpretiert sie als 16-Bit-Ganzzahl mit Vorzeichen.

DataView.prototype.getInt32()

Liest 4 Bytes ab dem angegebenen Byte-Versatz dieses DataView und interpretiert sie als 32-Bit-Ganzzahl mit Vorzeichen.

DataView.prototype.getInt8()

Liest 1 Byte am angegebenen Byte-Versatz dieses DataView und interpretiert es als 8-Bit-Ganzzahl mit Vorzeichen.

DataView.prototype.getUint16()

Liest 2 Bytes ab dem angegebenen Byte-Versatz dieses DataView und interpretiert sie als 16-Bit-Ganzzahl ohne Vorzeichen.

DataView.prototype.getUint32()

Liest 4 Bytes ab dem angegebenen Byte-Versatz dieses DataView und interpretiert sie als 32-Bit-Ganzzahl ohne Vorzeichen.

DataView.prototype.getUint8()

Liest 1 Byte am angegebenen Byte-Versatz dieses DataView und interpretiert es als 8-Bit-Ganzzahl ohne Vorzeichen.

DataView.prototype.setBigInt64()

Nimmt ein BigInt und speichert es als 64-Bit-Ganzzahl mit Vorzeichen in den 8 Bytes ab dem angegebenen Byte-Versatz dieses DataView.

DataView.prototype.setBigUint64()

Nimmt ein BigInt und speichert es als 64-Bit-Ganzzahl ohne Vorzeichen in den 8 Bytes ab dem angegebenen Byte-Versatz dieses DataView.

DataView.prototype.setFloat16()

Nimmt eine Zahl und speichert sie als 16-Bit-Gleitkommazahl in den 2 Bytes ab dem angegebenen Byte-Versatz dieses DataView.

DataView.prototype.setFloat32()

Nimmt eine Zahl und speichert sie als 32-Bit-Gleitkommazahl in den 4 Bytes ab dem angegebenen Byte-Versatz dieses DataView.

DataView.prototype.setFloat64()

Nimmt eine Zahl und speichert sie als 64-Bit-Gleitkommazahl in den 8 Bytes ab dem angegebenen Byte-Versatz dieses DataView.

DataView.prototype.setInt16()

Nimmt eine Zahl und speichert sie als 16-Bit-Ganzzahl mit Vorzeichen in den 2 Bytes am angegebenen Byte-Versatz dieses DataView.

DataView.prototype.setInt32()

Nimmt eine Zahl und speichert sie als 32-Bit-Ganzzahl mit Vorzeichen in den 4 Bytes am angegebenen Byte-Versatz dieses DataView.

DataView.prototype.setInt8()

Nimmt eine Zahl und speichert sie als 8-Bit-Ganzzahl mit Vorzeichen im Byte am angegebenen Byte-Versatz dieses DataView.

DataView.prototype.setUint16()

Nimmt eine Zahl und speichert sie als 16-Bit-Ganzzahl ohne Vorzeichen in den 2 Bytes am angegebenen Byte-Versatz dieses DataView.

DataView.prototype.setUint32()

Nimmt eine Zahl und speichert sie als 32-Bit-Ganzzahl ohne Vorzeichen in den 4 Bytes am angegebenen Byte-Versatz dieses DataView.

DataView.prototype.setUint8()

Nimmt eine Zahl und speichert sie als 8-Bit-Ganzzahl ohne Vorzeichen im Byte am angegebenen Byte-Versatz dieses DataView.

Beispiele

Verwendung von DataView

js
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer, 0);

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

Spezifikationen

Specification
ECMAScript Language Specification
# sec-dataview-objects

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch