La vue DataView fournit une interface de bas niveau pour lire et écrire des données depuis/dans un ArrayBuffer.
Syntaxe
new DataView(buffer [, décalageOctets [, longueurOctets]])
Paramètres
buffer- Un
ArrayBufferexistant à utiliser pour la mise en mémoire du nouvel objetDataView. décalageOctetsFacultatif- 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.
longueurOctetsFacultatif- 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écalageOctetsetlongueurOctetsdépassent la fin du buffer fourni.
Description
Détecter 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);
return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true ou false
Propriétés
- DataView.length
- La longueur du constructeur
DataViewqui 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.bufferLecture seule- L'
ArrayBufferré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.byteLengthLecture 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.byteOffsetLecture seule- Le décalage, exprimé en octets, entre le début de la vue et du
ArrayBuffercorrespondant. 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 | Statut | Commentaires |
|---|---|---|
| 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. |
| Typed Array Specification | Obsolete | Remplacée par ECMAScript 6 |
Compatibilité des navigateurs
| Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Support simple | 9.0 | 15.0 (15.0) | 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
DataViewpour tous les navigateurs et pour Node.js.
Étiquettes et contributeurs liés au document
Étiquettes :
Contributeurs à cette page : SphinxKnight
Dernière mise à jour par :
SphinxKnight,