DataView

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

Syntaxe

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

Paramètres

buffer
Un ArrayBuffer 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 2017 Draft (ECMA-262)
La définition de 'DataView' dans cette spécification.
Projet  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Edge Internet Explorer Opera Safari
Support simple 9.0 15.0 (15.0) 12 10 12.1 5.1
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple 4.0 (Oui) 15.0 (15) ? 12.0 4.2

Notes relatives à Firefox

À partir de Gecko / SpiderMonkey 40 (Firefox 40 / Thunderbird 40 / SeaMonkey 2.37), DataView doit être construit avec l'opérateur new. Si on appelle DataView() comme une fonction, sans new, cela lèvera une exception TypeError à partir de maintenant.

var dv = DataView(buffer, 0); 
// TypeError: appeler un constructeur natif DataView sans new est interdit
var dv = new DataView(buffer, 0);

Voir aussi

  • jDataView : une bibliothèque JavaScript qui émule (polyfill) et étend l'API DataView pour tous les navigateurs et pour Node.js.

Étiquettes et contributeurs liés au document

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