Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
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'objet ArrayBuffer 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'un ArrayBuffer, la manipulation se fait de façon indirecte en créant un tableau typé ou un objet DataView 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 constructeur ArrayBuffer() permet de créer un nouvel objet ArrayBuffer 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 en Base64 ou depuis un fichier local.
Un objet ArrayBuffer peut être redimensionnable en incluant l'option maxByteLength lors de l'appel au constructeur ArrayBuffer(). Vous pouvez savoir si un ArrayBuffer est redimensionnable et connaître sa taille maximale en consultant ses propriétés resizable et maxByteLength. Vous pouvez attribuer une nouvelle taille à un ArrayBuffer redimensionnable avec resize(). Les nouveaux octets sont initialisés à 0.
Ces fonctionnalités rendent le redimensionnement des ArrayBuffer 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 avec WebAssembly.Memory.prototype.grow()).
Un objet ArrayBuffer peut être transféré entre différents contextes d'exécution, comme les Web Workers ou les Service Workers, en utilisant l'algorithme de clonage structuré. Cela se fait en passant l'ArrayBuffer comme objet transférable lors d'un appel à Worker.postMessage() ou ServiceWorker.postMessage(). En JavaScript, vous pouvez aussi transférer la mémoire d'un ArrayBuffer à un autre avec transfer() ou transferToFixedLength().
Quand un ArrayBuffer est transféré, sa copie d'origine devient dé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 :
Vous pouvez vérifier si un ArrayBuffer est détaché grâce à sa propriété detached.
Crée un nouvel objet ArrayBuffer.
La fonction de construction utilisée pour créer des objets dérivés.
Retourne true si arg est une des vues sur le tableau typé sous la forme d'un objet de tableau typé ou DataView et false sinon.
Ces propriétés sont définies sur ArrayBuffer.prototype et partagées par toutes les instances de ArrayBuffer.
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éthode ArrayBuffer.prototype.resize() si l'objet ArrayBuffer est redimensionnable.
ArrayBuffer.prototype.constructorLa fonction de construction qui a créé l'objet d'instance. Pour les instances de ArrayBuffer, la valeur initiale est le constructeur ArrayBuffer.
ArrayBuffer.prototype.detached Lecture seuleRetourne true si l'objet ArrayBuffer a été détaché (transféré), ou false sinon.
ArrayBuffer.prototype.maxByteLengthLa longueur maximale, en octets, à laquelle l'objet ArrayBuffer peut être redimensionné. Cette valeur est établie à la construction du tableau et ne peut pas être modifiée.
ArrayBuffer.prototype.resizable Lecture seuleRetourne true si l'objet ArrayBuffer peut être redimensionné, ou false sinon.
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 dans Object.prototype.toString().
Redimensionne l'objet ArrayBuffer à la taille définie, en octets.
ArrayBuffer.prototype.slice()Retourne un nouvel objet ArrayBuffer dont le contenu est une copie des octets de cet objet ArrayBuffer depuis begin (inclus) jusqu'à end (exclus). Si begin ou end est 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 ArrayBuffer avec le même contenu d'octets que ce tampon, puis détache ce tampon.
ArrayBuffer.prototype.transferToFixedLength()Crée un nouvel objet ArrayBuffer non redimensionnable avec le même contenu d'octets que ce tampon, puis détache ce tampon.
Dans cet exemple, on crée un tampon de mémoire sur 8 octets avec une vue Int32Array qui porte sur le tampon :
| ECMAScript® 2027 Language Specification # sec-arraybuffer-objects |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 5 nov. 2025 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.