La vue DataView fournit une interface de bas niveau pour lire et écrire des données depuis/dans un ArrayBuffer ou dans un SharedArrayBuffer, quel que soit le « boutisme » de la plate-forme.

Syntaxe

new DataView(buffer [, décalageOctets [, longueurOctets]])

Paramètres

buffer
Un ArrayBuffer ou SharedArrayBuffer existant à utiliser pour la mise en mémoire du nouvel objet DataView.
décalageOctets Facultatif
Le décalage, exprimé en octets, pour trouver le premier octet significatif du buffer à représenter dans la vue. Si ce paramètre n'est pas fourni, la vue commencera au premier octet du buffer.
longueurOctets Facultatif
Le nombre d'éléments dans le tableau d'octets. Si ce paramètre n'est pas fourni, la longueur de la vue correspondra à celle du buffer.

Valeur de retour

Un nouvel objet DataView représentant le tampon mémoire (buffer) fourni.

Erreurs renvoyées

RangeError
Renvoyée si les paramètres décalageOctets et longueurOctets dépassent la fin du buffer fourni.

Description

Le boutisme (endianness)

En utilisant cet objet, vous pouvez détecter le type d'architecture qui exécute votre script, ce qui peut être utile dans certains cas. Voici un fragment de code pour permettre cette détection. Voir Endianness pour plus d'informations.

var littleEndian = (function() {
  var buffer = new ArrayBuffer(2);
  new DataView(buffer).setInt16(0, 256, true /*littleEndian donc */);
  // Int16Array utilise le boutisme de la plate-forme
  return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true ou false

Propriétés

DataView.length
La longueur du constructeur DataView qui vaut 3.
DataView.prototype
Permet d'ajouter des propriétés à tous les objets DataView.

Instances de DataView

Chacune des instances de DataView hérite de DataView.prototype.

Propriétés

DataView.prototype.constructor
Définit la fonction qui permet de créer le prototype d'un objet. La valeur initiale correspond au constructeur natif standard DataView.
DataView.prototype.buffer Lecture seule
L'ArrayBuffer référencé par cette vue. Cette propriété est fixée lors de la construction de l'objet et est donc en lecture seule.
DataView.prototype.byteLength Lecture seule
La longueur, exprimée en octets, de la vue à partir du début de son ArrayBuffer. Cette propriété est fixée lors de la construction de l'objet et est donc en lecture seule.
DataView.prototype.byteOffset Lecture seule
Le décalage, exprimé en octets, entre le début de la vue et du ArrayBuffer correspondant. Cette propriété est fixée lors de la construction de l'objet et est donc en lecture seule.

Méthodes

Lecture

DataView.prototype.getInt8()
Obtient un entier signé codé sur 8 bits à partir de l'octet de début (potentiellement décalé) de la vue.
DataView.prototype.getUint8()
Obtient un entier non-signé codé sur 8 bits à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.getInt16()
Obtient un entier signé codé sur 16 bits (short par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.getUint16()
Obtient un entier non-signé codé sur 16 bits (unsigned short par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.getInt32()
Obtient un entier signé codé sur 32 bits (long par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.getUint32()
Obtient un entier non-signé codé sur 32 bits (unsigned long par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.getFloat32()
Obtient un flottant codé sur 32 bits (float par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.getFloat64()
Obtient un flottant codé sur 64 bits (double par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).

Écriture

DataView.prototype.setInt8()
Enregistre un entier signé codé sur 8 bits à partir de l'octet de début (potentiellement décalé) de la vue.
DataView.prototype.setUint8()
Enregistre un entier non-signé codé sur 8 bits à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.setInt16()
Enregistre un entier signé codé sur 16 bits (short par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.setUint16()
Enregistre un entier non-signé codé sur 16 bits (unsigned short par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.setInt32()
Enregistre un entier signé codé sur 32 bits (long par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.setUint32()
Enregistre un entier non-signé codé sur 32 bits (unsigned long par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.setFloat32()
Enregistre un flottant codé sur 32 bits (float par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).
DataView.prototype.setFloat64()
Enregistre un flottant codé sur 64 bits (double par analogie avec le type C) à partir de l'octet de début de la vue (potentiellement décalé).

Exemples

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

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

Spécifications

Spécification État Commentaires
Typed Array Specification Obsolete Remplacée par ECMAScript 6
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'DataView' dans cette spécification.
Standard Définition initiale au sein d'un standard ECMA.
ECMAScript Latest Draft (ECMA-262)
La définition de 'DataView' dans cette spécification.
Projet  

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple912151012.15.1
DataView() without new throws Oui Oui40 Non Oui ?
SharedArrayBuffer accepted as buffer60 ?55 ? ? ?
buffer912151012.15.1
byteLength912151012.15.1
byteOffset912151012.15.1
getFloat32912151012.15.1
getFloat64912151012.15.1
getInt16912151012.15.1
getInt32912151012.15.1
getInt8912151012.15.1
getUint16912151012.15.1
getUint32912151012.15.1
getUint8912151012.15.1
setFloat32912151012.15.1
setFloat64912151012.15.1
setInt16912151012.15.1
setInt32912151012.15.1
setInt8912151012.15.1
setUint16912151012.15.1
setUint32912151012.15.1
setUint8912151012.15.1
prototype912151012.15.1
FonctionnalitéAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Support simple4 Oui Oui15124.2 Oui
DataView() without new throws ? ? ?40 ? ? ?
SharedArrayBuffer accepted as buffer ? ? ?55 ? ? ?
buffer4 Oui Oui15124.2 Oui
byteLength4 Oui Oui15124.2 Oui
byteOffset4 Oui Oui15124.2 Oui
getFloat324 Oui Oui15124.2 Oui
getFloat644 Oui Oui15124.2 Oui
getInt164 Oui Oui15124.2 Oui
getInt324 Oui Oui15124.2 Oui
getInt84 Oui Oui15124.2 Oui
getUint164 Oui Oui15124.2 Oui
getUint324 Oui Oui15124.2 Oui
getUint84 Oui Oui15124.2 Oui
setFloat324 Oui Oui15124.2 Oui
setFloat644 Oui Oui15124.2 Oui
setInt164 Oui Oui15124.2 Oui
setInt324 Oui Oui15124.2 Oui
setInt84 Oui Oui15124.2 Oui
setUint164 Oui Oui15124.2 Oui
setUint324 Oui Oui15124.2 Oui
setUint84 Oui Oui15124.2 Oui
prototype4 Oui Oui15124.2 Oui

Notes de compatibilité

A partir de Firefox 40 (Firefox 40 / Thunderbird 40 / SeaMonkey 2.37), DataView doit êre construit avec l'opérateur new. Si on invoque DataView() sans utiliser new, cela lèvera une exception TypeError.

var dv = DataView(buffer, 0); 
// TypeError: calling a builtin DataView constructor without new is forbidden
var dv = new DataView(buffer, 0);

Voir aussi

  • jDataView : une bibliothèque JavaScrit qui ajoute des prothèses et des extensions à l'API DataView afin de pouvoir la manipuler au travers des différents navigateurs et de Node.js.
  • ArrayBuffer
  • SharedArrayBuffer

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,