Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
ArrayBuffer
Baseline Widely available *
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
L'objetArrayBuffer est utilisé afin de représenter un tampon (buffer) de données binaires de longueur fixe de façon générique.
Il s'agit d'un tableau d'octets. Il n'est pas possible de manipuler directement le contenu d'unArrayBuffer, la manipulation se fait de façon indirecte en créant untableau typé ou un objetDataView qui permet de représenter le tampon dans un format donné qui permet de lire/écrire des contenus dans le tampon de mémoire.
Le constructeurArrayBuffer() permet de créer un nouvel objetArrayBuffer dont la longueur, en octets, est fournie par l'argument. Il est aussi possible d'obtenir un tableau typé à partir de données existantes, par exemple depuis une chaîne enBase64 oudepuis un fichier local.
Dans cet article
Description
>Redimensionnement des ArrayBuffer
Un objetArrayBuffer peut être redimensionnable en incluant l'optionmaxByteLength lors de l'appel au constructeurArrayBuffer(). Vous pouvez savoir si unArrayBuffer est redimensionnable et connaître sa taille maximale en consultant ses propriétésresizable etmaxByteLength. Vous pouvez attribuer une nouvelle taille à unArrayBuffer redimensionnable avecresize(). Les nouveaux octets sont initialisés à 0.
Ces fonctionnalités rendent le redimensionnement desArrayBuffer plus efficace — sinon, il faut copier le tampon dans une nouvelle taille. Cela rapproche JavaScript de WebAssembly (la mémoire linéaire Wasm peut être redimensionnée avecWebAssembly.Memory.prototype.grow()).
Transfert des ArrayBuffer
Un objetArrayBuffer peut être transféré entre différents contextes d'exécution, comme lesWeb Workers ou lesService Workers, en utilisant l'algorithme de clonage structuré. Cela se fait en passant l'ArrayBuffer commeobjet transférable lors d'un appel àWorker.postMessage() ouServiceWorker.postMessage(). En JavaScript, vous pouvez aussi transférer la mémoire d'unArrayBuffer à un autre avectransfer() outransferToFixedLength().
Quand unArrayBuffer est transféré, sa copie d'origine devientdétachée — cela signifie qu'il n'est plus utilisable. À tout moment, il n'existe qu'une seule copie de l'ArrayBuffer qui a accès à la mémoire sous-jacente. Un tampon détaché a les comportements suivants :
byteLengthvaut 0 (dans le tampon et les vues de tableau typé associées).- Les méthodes comme
resize()etslice()lèvent une exceptionTypeErrorlorsqu'on les appelle. Les méthodes des vues de tableau typé associées lèvent aussi uneTypeError.
Vous pouvez vérifier si unArrayBuffer est détaché grâce à sa propriétédetached.
Constructeur
ArrayBuffer()Crée un nouvel objet
ArrayBuffer.
Propriétés statiques
ArrayBuffer[Symbol.species]La fonction de construction utilisée pour créer des objets dérivés.
Méthodes statiques
ArrayBuffer.isView()Retourne
truesiargest une des vues sur le tableau typé sous la forme d'unobjet de tableau typé ouDataViewetfalsesinon.
Propriétés d'instances
Ces propriétés sont définies surArrayBuffer.prototype et partagées par toutes les instances deArrayBuffer.
ArrayBuffer.prototype.byteLengthLa taille, en octets, de l'objet
ArrayBuffer. Cette valeur est établie à la construction du tableau et ne peut être modifiée qu'en utilisant la méthodeArrayBuffer.prototype.resize()si l'objetArrayBufferest redimensionnable.ArrayBuffer.prototype.constructorLa fonction de construction qui a créé l'objet d'instance. Pour les instances de
ArrayBuffer, la valeur initiale est le constructeurArrayBuffer.ArrayBuffer.prototype.detachedLecture seuleRetourne
truesi l'objetArrayBuffera été détaché (transféré), oufalsesinon.ArrayBuffer.prototype.maxByteLengthLa longueur maximale, en octets, à laquelle l'objet
ArrayBufferpeut être redimensionné. Cette valeur est établie à la construction du tableau et ne peut pas être modifiée.ArrayBuffer.prototype.resizableLecture seuleRetourne
truesi l'objetArrayBufferpeut être redimensionné, oufalsesinon.ArrayBuffer.prototype[Symbol.toStringTag]La valeur initiale de la propriété
[Symbol.toStringTag]est la chaîne de caractères"ArrayBuffer". Cette propriété est utilisée dansObject.prototype.toString().
Méthodes d'instances
ArrayBuffer.prototype.resize()Redimensionne l'objet
ArrayBufferà la taille définie, en octets.ArrayBuffer.prototype.slice()Retourne un nouvel objet
ArrayBufferdont le contenu est une copie des octets de cet objetArrayBufferdepuisbegin(inclus) jusqu'àend(exclus). Sibeginouendest négatif, cela indique un indice à partir de la fin du tableau, plutôt qu'à partir du début.ArrayBuffer.prototype.transfer()Crée un nouvel objet
ArrayBufferavec le même contenu d'octets que ce tampon, puis détache ce tampon.ArrayBuffer.prototype.transferToFixedLength()Crée un nouvel objet
ArrayBuffernon redimensionnable avec le même contenu d'octets que ce tampon, puis détache ce tampon.
Exemples
>Créer un objetArrayBuffer
Dans cet exemple, on crée un tampon de mémoire sur 8 octets avec une vueInt32Array qui porte sur le tampon :
const buffer = new ArrayBuffer(8);const view = new Int32Array(buffer);Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-arraybuffer-objects> |