1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
---
title: ArrayBuffer
slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer
tags:
- ArrayBuffer
- Constructor
- JavaScript
- Reference
- TypedArrays
translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer
original_slug: Web/JavaScript/Reference/Objets_globaux/ArrayBuffer
---
{{JSRef}}
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. C'est un tableau d'octets. La manipulation du contenu d'un `ArrayBuffer` se fait de façon indirecte en créant un [tableau typé](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray) ou un objet {{jsxref("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.
{{EmbedInteractiveExample("pages/js/arraybuffer-constructor.html")}}
## Syntaxe
new ArrayBuffer(longueur)
### Paramètres
- `longueur`
- : La taille, exprimée en octets, du tableau représentant le tampon.
### Valeur de retour
Un nouvel objet `ArrayBuffer` de la taille donnée. Ses éléments sont initialisés à 0.
### Exceptions
Une exception {{jsxref("RangeError")}} est levée lorsque l'argument `longueur` est supérieur à {{jsxref("Number.MAX_SAFE_INTEGER")}} (soit 2^53) ou s'il est négatif.
## Description
Le constructeur `ArrayBuffer` crée une nouvelle instance d'`ArrayBuffer` dont la longueur est celle donnée lors de la construction.
### Obtenir un tampon mémoire depuis des données existantes
- [À partir d'une chaîne de caractères en Base 64](/fr/docs/Décoder_encoder_en_base64#Annexe_.3A_D.C3.A9coder_une_cha.C3.AEne_en_base64_en_un_objet_Uint8Array_ou_ArrayBuffer)
- [À partir d'un fichier local](/fr/docs/Web/API/FileReader)
## Propriétés
- `ArrayBuffer.length`
- : La longueur du constructeur `ArrayBuffer`. Elle vaut 1.
- {{jsxref("ArrayBuffer.@@species", "get ArrayBuffer[@@species]")}}
- : La fonction de construction utilisée pour créer les objets dérivés.
- {{jsxref("ArrayBuffer.prototype")}}
- : Cette propriété permet d'ajouter des propriétés à tous les objets `ArrayBuffer`.
## Méthodes
- {{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}
- : Cette méthode renvoie `true` si `arg` est une des vues sur l'`ArrayBuffer` telle qu'un [tableau typé](/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypedArray) ou un objet {{jsxref("DataView")}}, sinon elle renvoie `false`.
- {{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(ancienTampon [, nouvelleLongueur])")}} {{experimental_inline}}
- : Cette méthode renvoie un nouvel objet `ArrayBuffer` dont le contenu est transféré depuis les données de `ancienTampon` et qui est ensuite tronqué ou rallongé avec des zéros pour que la taille du nouveau tampon soit `nouvelleLongueur`.
## Les instances d'`ArrayBuffer`
Toutes les instances d'`ArrayBuffer` héritent de {{jsxref("ArrayBuffer.prototype")}}.
### Propriétés
{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer/prototype','Propri.C3.A9t.C3.A9s')}}
### Méthodes
{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer/prototype','M.C3.A9thodes')}}
- {{jsxref("ArrayBuffer.slice()")}} {{non-standard_inline}}
- : Cette méthode fournit la même fonctionnalité que {{jsxref("ArrayBuffer.prototype.slice()")}}.
## Exemple
Dans cet exemple, on crée un tampon sur 8 octets avec une vue {{jsxref("Int32Array")}} qui fait référence à ce tampon :
```js
var tampon = new ArrayBuffer(8);
var vue = new Int32Array(tampon);
```
## Spécifications
| Spécification | État | Commentaires |
| -------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------- |
| {{SpecName('Typed Array')}} | {{Spec2('Typed Array')}} | Remplacée par ECMAScript 6. |
| {{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}} | {{Spec2('ES6')}} | Définition initiale au sein d'un standard ECMA. `new` est obligaoire pour utiliser le constructeur. |
| {{SpecName('ESDraft', '#sec-arraybuffer-constructor', 'ArrayBuffer')}} | {{Spec2('ESDraft')}} | |
## Compatibilité des navigateurs
{{Compat("javascript.builtins.ArrayBuffer")}}
## Notes de compatibilité
À partir d'ECMAScript 2015 (ES6), `ArrayBuffer` doit être utilisée avec {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Appeler un constructeur `ArrayBuffer` comme une fonction, sans `new`, provoquera une exception {{jsxref("TypeError")}}.
```js example-bad
var dv = ArrayBuffer(10);
// TypeError: calling a builtin ArrayBuffer constructor
// without new is forbidden
```
```js example-good
var dv = new ArrayBuffer(10);
```
## Voir aussi
- [Les tableaux typés JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés)
- {{jsxref("SharedArrayBuffer")}}
|