javascript - l'objet arraybuffer
Transcription
javascript - l'objet arraybuffer
L’Objet ArrayBuffer Pour Débutant 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 [email protected] L’OBJET ARRAYBUFFER : Un objet particulier en JavaScript c’est le « ArrayBuffer » (littéralement « tampon de tableau »). C’est un espace-mémoire qu’on réserve pour des éléments d’Arrays typées et 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 L’Objet ArrayBuffer JavaScript Tome-XXII - 2/15 - jeudi, 4. avril 2019 (10:46 ) 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 - jeudi, 4. avril 2019 (10:46 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII test.html:23 float32 = new Float32Array(buffer) = Float32Array(3) [0, 0, 0] test.html:25 test.html:26 test.html:28 float32.byteLength = 12 float32.length = 3 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. 2. 3. 4. 5. 6. 7. 8. 9. 0: 0 1: 0 2: 0 buffer: (...) byteLength: (...) byteOffset: (...) length: (...) Symbol(Symbol.toStringTag): (...) __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 - jeudi, 4. avril 2019 (10:46 ) J.D.B. DIASOLUKA Nz. Luyalu 3. 4. 5. 6. JavaScript Tome-XXII 6. prototype: 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] slice: ƒ slice() Symbol(Symbol.toStringTag): "ArrayBuffer" get byteLength: ƒ byteLength() __proto__: Object test.html:23 float32 Float32Array(3) [0, 0, 0] = new Float32Array(buffer) 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 - jeudi, 4. avril 2019 (10:46 ) = J.D.B. DIASOLUKA Nz. Luyalu buffer.toString() = [object ArrayBuffer] test.html:16:5 JavaScript Tome-XXII Object.getOwnPropertyDescriptors(buffer) = Object { } test.html:17:5 float32 = new Float32Array(buffer) = Float32Array(3) [0, 0, 0] test.html:23:5 float32.byteLength = 12 float32.length = 3 float32.buffer.byteLength= 12 test.html:25:5 test.html:26:5 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 - jeudi, 4. avril 2019 (10:46 ) 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 - jeudi, 4. avril 2019 (10:46 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII Avec Yandex : L’Objet ArrayBuffer - 8/15 - jeudi, 4. avril 2019 (10:46 ) J.D.B. DIASOLUKA Nz. Luyalu L’Objet ArrayBuffer JavaScript Tome-XXII - 9/15 - jeudi, 4. avril 2019 (10:46 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII Kinshasa, le jeudi, 4. avril 2019 (10:46 ). L’Objet ArrayBuffer - 10/15 - jeudi, 4. avril 2019 (10:46 ) J.D.B. DIASOLUKA Nz. Luyalu L’Objet ArrayBuffer - 11/15 - JavaScript Tome-XXII jeudi, 4. avril 2019 (10:46 ) 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 [email protected] Autre Lecture : https://www.scribd.com/document/374738470/Le-Plus-Grand-Secret-de-LaCreation L’Objet ArrayBuffer - 12/15 - jeudi, 4. avril 2019 (10:46 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII D’autres publications pouvant aussi intéresser : • https://www.scribd.com/document/377036251/LeDosage-Des-Medicaments-en-Cac-Cas • https://www.scribd.com/document/377035454/LeHasard-Des-Thermometres-Non-contact-a-Infrarouge • https://www.scribd.com/document/376222482/PetiteIntroduction-Aux-Fonctions-JavaScript • https://www.scribd.com/document/376221919/La-Foien-Jesus-Christ-Pour-Quoi-Faire • https://www.scribd.com/document/375689778/Lacuitevisuelle-angulaire • https://www.scribd.com/document/375349851/Lavariable-This • https://www.scribd.com/document/375024162/FonctionsImbriquees-en-JS • https://www.scribd.com/document/374789297/FormatInterne-Des-Objets-JavaScript • https://www.scribd.com/document/374788758/Iterationsen-JavaScript • https://www.scribd.com/document/374738470/Le-PlusGrand-Secret-de-La-Creation • https://www.scribd.com/document/374597969/NouvelleFormule-d-IMC-indice-de-doduite-Selon-Dr-Diasoluka • https://www.scribd.com/document/373847209/PropertyDescriptors • https://www.scribd.com/document/373833282/l-ObjetL’Objet ArrayBuffer - 13/15 - jeudi, 4. avril 2019 (10:46 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII Global-Window • https://www.scribd.com/document/372665249/JavascriptTome-II • https://www.scribd.com/document/355291488/motiliteoculaire-2 • https://www.scribd.com/document/355291239/motiliteoculaire-I • https://www.scribd.com/document/355290248/Script-dAnalyses-Des-Reflexes-Pupillomoteurs • https://www.scribd.com/document/321168468/Renseigne ments-Id-et-Anthropometriques • https://www.scribd.com/document/320856721/Emission31-Jul-2016 • https://www.scribd.com/document/318182982/Complicati on-Visuelle-du-Traitement-de-La-Malaria • https://www.scribd.com/document/318180637/RapportEntre-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-deLaboratoire • https://www.scribd.com/document/315745725/RapportL’Objet ArrayBuffer - 14/15 - jeudi, 4. avril 2019 (10:46 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-XXII Entre-Oxymetrie-Et-Type-Respiration L’Objet ArrayBuffer - 15/15 - jeudi, 4. avril 2019 (10:46 )