Vous êtes sur la page 1sur 15

L’Objet ArrayBuffer

J AVA S C R I P T (Programmation Internet) V O L . X X I I

J.B. Dadet DIASOLUKA Luyalu Nzoyifuanga


+243 - 851278216 - 899508675 - 995624714 - 902263541 - 813572818
diasfb@mail2world.com

L’OBJET ARRAYBUFFER :

Un objet particulier est le « ArrayBuffer » (littéralement « tampon de ta-


bleau »). C’est un espace-mémoire qu’on réserve pour des éléments
d’Arrays typées, de taille connue.

<script type="text/javascript"> "use strict";


// create an ArrayBuffer with a size in bytes
const buffer = new ArrayBuffer(10);
// Réserver 10 places en Bytes ds ArrayBuffer
console.log(buffer);
console.log(buffer.byteLength);

const uint8 = new Uint8Array(buffer, 3);


// Réserver des places pour des entiers non
// signés dans ArrayBuffer depuis l'offset 4
console.log(uint8);
console.log(uint8.byteLength);

uint8.fill(Math.round(Math.random()*10));
// Remplir tous les Bytes réservés
console.log(uint8);
</script>
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII

L’Objet ArrayBuffer - 2/15 - vendredi, 25. janvier 2019 (3:21 )


J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII
Exemple :

<script type="text/javascript">
// var buffer = new ArrayBuffer(10);
// var float32 = new Float32Array(buffer);

// Avec YANDEX : Uncaught RangeError:


// byte length of Float32Array should be a multiple of 4
// at new Float32Array (<anonymous>) at test.html:3
//
// Avec Firefox : RangeError:
// attempting to construct out-of-bounds TypedArray
// on ArrayBuffer test.html:3:16

var buffer = new ArrayBuffer(12);


console.log("buffer = new ArrayBuffer(12) =",buffer);
console.log("buffer.toString() =",buffer.toString());
console.log("Object.getOwnPropertyDescriptors(buffer) =",
Object.getOwnPropertyDescriptors(buffer));

console.log("");

var float32 = new Float32Array(buffer);


console.log("float32 = new Float32Array(buffer) =",
float32);
console.log("float32.byteLength =",float32.byteLength);
console.log("float32.length =",float32.length);
console.log("float32.buffer.byteLength=",
float32.buffer.byteLength);
</script>

Exécution avec YANDEX :

buffer = new ArrayBuffer(12) = ArrayBuffer(12) {}


test.html:16
buffer.toString() = [object ArrayBuffer]

test.html:17
Object.getOwnPropertyDescriptors(buffer) = {}

L’Objet ArrayBuffer - 3/15 - vendredi, 25. janvier 2019 (3:21 )


J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII
test.html:23
float32 = new Float32Array(buffer) =
Float32Array(3) [0, 0, 0]

test.html:25 float32.byteLength = 12
test.html:26 float32.length = 3
test.html:28 float32.buffer.byteLength= 12

test.html:15 buffer = new ArrayBuffer(12) = ArrayBuffer(12) {}

1. ArrayBuffer(12) {}
1. [[Int8Array]]: Int8Array(12) [0,0,0,0,0,0,0,0,0,0,0,0]
2. [[Int16Array]]: Int16Array(6) [0, 0, 0, 0, 0, 0]
3. [[Int32Array]]: Int32Array(3) [0, 0, 0]
1. 0: 0
2. 1: 0
3. 2: 0
4. buffer: (...)
5. byteLength: (...)
6. byteOffset: (...)
7. length: (...)
8. Symbol(Symbol.toStringTag): (...)
9. __proto__: TypedArray
1. BYTES_PER_ELEMENT: 4
2. buffer: (...)
3. byteLength: (...)
4. byteOffset: (...)
5. constructor: ƒ Int32Array()
6. length: (...)
7. Symbol(Symbol.toStringTag): (...)
8. __proto__: Object

4. [[Uint8Array]]: Uint8Array(12) [0,0,0,0,0,0,0,0,0,0,0,0]


5. byteLength: (...)

6. __proto__: ArrayBuffer
1. byteLength: (...)
2. constructor: ƒ ArrayBuffer()
1. arguments: (...)
2. caller: (...)
3. isView: ƒ isView()
4. length: 1
5. name: "ArrayBuffer"

L’Objet ArrayBuffer - 4/15 - vendredi, 25. janvier 2019 (3:21 )


J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII
6. proto-
type: ArrayBuffer {constructor: ƒ, slice: ƒ, Symb
ol(Symbol.toStringTag): "ArrayBuffer"}
7. Symbol(Symbol.species): (...)
8. get Symbol(Symbol.species): ƒ [Symbol.species]()
9. __proto__: ƒ ()
10. [[Scopes]]: Scopes[0]
3. slice: ƒ slice()
4. Symbol(Symbol.toStringTag): "ArrayBuffer"
5. get byteLength: ƒ byteLength()
6. __proto__: Object

test.html:23 float32 = new Float32Array(buffer) =


Float32Array(3) [0, 0, 0]

1. Float32Array(3) [0, 0, 0]
1. 0: 0
2. 1: 0
3. 2: 0
4. buffer: (...)
5. byteLength: (...)
6. byteOffset: (...)
7. length: (...)
8. Symbol(Symbol.toStringTag): (...)
9. __proto__: TypedArray
1. BYTES_PER_ELEMENT: 4
2. buffer: (...)
3. byteLength: (...)
4. byteOffset: (...)
5. constructor: ƒ Float32Array()
6. length: (...)
7. Symbol(Symbol.toStringTag): (...)
8. __proto__: Object

Exécution Avec FireFox :

buffer = new ArrayBuffer(12) = ArrayBuffer { byteLength: 12 }


test.html:15:5

L’Objet ArrayBuffer - 5/15 - vendredi, 25. janvier 2019 (3:21 )


J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII
buffer.toString() = [object ArrayBuffer]
test.html:16:5

Object.getOwnPropertyDescriptors(buffer) = Object { }
test.html:17:5

float32 = new Float32Array(buffer) = Float32Array(3) [0, 0, 0]


test.html:23:5

float32.byteLength = 12 test.html:25:5
float32.length = 3 test.html:26:5
float32.buffer.byteLength= 12 test.html:27:2

buffer = new ArrayBuffer(12) = ArrayBuffer { byteLength: 12 }


test.html:15:5

ArrayBuffer { byteLength: 12 }
ArrayBuffer
byteLength: 12
<prototype>: ArrayBufferPrototype { … }
byteLength: Getter
constructor: function ArrayBuffer()
slice: function slice()
Symbol(Symbol.toStringTag): "ArrayBuffer"
<prototype>: Object { … }

Object.getOwnPropertyDescriptors(buffer) = Object { }
test.html:17:5

{}
<prototype>: Object { … }
__defineGetter__: function __defineGetter__()
__defineSetter__: function __defineSetter__()
__lookupGetter__: function __lookupGetter__()
__lookupSetter__: function __lookupSetter__()
constructor: function Object()
hasOwnProperty: function hasOwnProperty()
isPrototypeOf: function isPrototypeOf()
propertyIsEnumerable:
function propertyIsEnumerable()
L’Objet ArrayBuffer - 6/15 - vendredi, 25. janvier 2019 (3:21 )
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII
toLocaleString: function toLocaleString()
toSource: function toSource()
toString: function toString()
valueOf: function valueOf()

float32 = new Float32Array(buffer) = Float32Array(3) [0, 0, 0]


test.html:23:5

Float32Array(3)
0: 0
1: 0
2: 0
buffer: ArrayBuffer { byteLength: 12 }
byteLength: 12
byteOffset: 0
length: 3
<prototype>: Float32ArrayPrototype { … }

Structure interne d’un « ArrayBuffer » en tapant ce mot à la ligne de


commande de la console du navigateur :

Avec Firefox :

L’Objet ArrayBuffer - 7/15 - vendredi, 25. janvier 2019 (3:21 )


J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII

Avec Yandex :

L’Objet ArrayBuffer - 8/15 - vendredi, 25. janvier 2019 (3:21 )


J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII

L’Objet ArrayBuffer - 9/15 - vendredi, 25. janvier 2019 (3:21 )


J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII

Kinshasa, le vendredi, 25. janvier 2019 (3:21 ).

L’Objet ArrayBuffer - 10/15 - vendredi, 25. janvier 2019 (3:21 )


J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII

L’Objet ArrayBuffer - 11/15 - vendredi, 25. janvier 2019 (3:21 )


J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII

Mots-clés :

Arrays typées, ArrayBuffer, Set, String, Typed Array, Array Typée,


Uint8Array, Uint16Array, Uint32Array, Int8Array, Int16Array,
Int32Array, Float32Array, Float64Array, Arrays, Array, slice, subarray,
tampon de tableau, initialiseur, Object literal, littéral d’objet, entries,
values, paradigme

DIASOLUKA Nz. Luyalu


Docteur en Médecine, Chirurgie & Accouchements (1977),
CNOM : 0866 - Spécialiste en ophtalmologie (1980)
Études humanités : Scientifique - Mathématiques & Physique.
Informaticien-amateur, Programmeur et WebMaster.

Chercheur indépendant, autonome et autofinancé,


bénévole, sans aucun conflit d’intérêt ou liens
d'intérêts ou contrainte promotionnelle avec qui qu’il
soit ou quelqu’organisme ou institution / organisation
que ce soit, étatique, paraétatique ou privé, industriel
ou commercial en relation avec le sujet présenté.

+243 - 851278216 - 899508675 - 991239212 - 902263541 - 813572818

diasfb@mail2world.com

Autre Lecture :
https://www.scribd.com/document/374738470/Le-Plus-Grand-Secret-de-La-
Creation

L’Objet ArrayBuffer - 12/15 - vendredi, 25. janvier 2019 (3:21 )


J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII
D’autres publications pouvant aussi intéresser :

• https://www.scribd.com/document/377036251/Le-
Dosage-Des-Medicaments-en-Cac-Cas
• https://www.scribd.com/document/377035454/Le-
Hasard-Des-Thermometres-Non-contact-a-Infrarouge
• https://www.scribd.com/document/376222482/Petite-
Introduction-Aux-Fonctions-JavaScript
• https://www.scribd.com/document/376221919/La-Foi-
en-Jesus-Christ-Pour-Quoi-Faire
• https://www.scribd.com/document/375689778/Lacuite-
visuelle-angulaire
• https://www.scribd.com/document/375349851/La-
variable-This

https://www.scribd.com/document/375024162/Fonctions-
Imbriquees-en-JS
• https://www.scribd.com/document/374789297/Format-
Interne-Des-Objets-JavaScript

https://www.scribd.com/document/374788758/Iterations-
en-JavaScript
• https://www.scribd.com/document/374738470/Le-Plus-
Grand-Secret-de-La-Creation
• https://www.scribd.com/document/374597969/Nouvelle-
Formule-d-IMC-indice-de-doduite-Selon-Dr-Diasoluka
• https://www.scribd.com/document/373847209/Property-
Descriptors
• https://www.scribd.com/document/373833282/l-Objet-
L’Objet ArrayBuffer - 13/15 - vendredi, 25. janvier 2019 (3:21 )
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII
Global-Window

https://www.scribd.com/document/372665249/Javascript-
Tome-II
• https://www.scribd.com/document/355291488/motilite-
oculaire-2
• https://www.scribd.com/document/355291239/motilite-
oculaire-I
• https://www.scribd.com/document/355290248/Script-d-
Analyses-Des-Reflexes-Pupillomoteurs

https://www.scribd.com/document/321168468/Renseigne
ments-Id-et-Anthropometriques

https://www.scribd.com/document/320856721/Emission-
31-Jul-2016

https://www.scribd.com/document/318182982/Complicati
on-Visuelle-du-Traitement-de-La-Malaria
• https://www.scribd.com/document/318180637/Rapport-
Entre-Oxymetrie-Et-Type-Respiration

https://www.scribd.com/document/315746265/Classificati
on-Des-Medicaments

https://www.scribd.com/document/315745909/Incongruen
ces-Heresies-et-Heterodoxies-de-la-Notion-de-
Laboratoire
• https://www.scribd.com/document/315745725/Rapport-
L’Objet ArrayBuffer - 14/15 - vendredi, 25. janvier 2019 (3:21 )
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII
Entre-Oxymetrie-Et-Type-Respiration

L’Objet ArrayBuffer - 15/15 - vendredi, 25. janvier 2019 (3:21 )