WebAssembly.Table
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis octobre 2017.
L'objet WebAssembly.Table est un objet JavaScript qui agit comme une structure de type tableau représentant un tableau WebAssembly, lequel stocke des références homogènes. Un tableau créé en JavaScript ou dans du code WebAssembly sera accessible et modifiable depuis du code JavaScript et depuis du code WebAssembly.
Note : Actuellement, les tableaux WebAssembly peuvent uniquement stocker des références à des fonctions ou des références hôtes, mais cette fonctionnalité sera vraisemblablement étendue par la suite.
Constructeur
WebAssembly.Table()-
Crée un nouvel objet
Table.
Propriétés d'instance
Table.prototype.lengthLecture seule-
Retourne la longueur du tableau, c'est-à-dire le nombre d'éléments dans le tableau.
Méthodes d'instance
Table.prototype.get()-
Fonction accesseur — obtient l'élément stocké à un index donné.
Table.prototype.grow()-
Augmente la taille de l'instance
Tabled'un nombre défini d'éléments. Table.prototype.set()-
Définit un élément stocké à un index donné avec une valeur donnée.
Exemples
>Créer une nouvelle instance de Table WebAssembly
L'exemple suivant (voir table2.html code source (angl.) et version en ligne (angl.)) crée une nouvelle instance de Table WebAssembly avec une taille initiale de 2 éléments. Nous affichons ensuite la longueur du tableau et le contenu des deux indices (obtenus avec Table.prototype.get()) pour montrer que la longueur est de deux et que les deux éléments sont null.
const tbl = new WebAssembly.Table({ initial: 2, element: "anyfunc" });
console.log(tbl.length); // "2"
console.log(tbl.get(0)); // "null"
console.log(tbl.get(1)); // "null"
Nous créons ensuite un objet d'importation qui contient le tableau :
const importObj = {
js: { tbl },
};
Enfin, nous chargeons et instancions un module Wasm (table2.wasm) en utilisant la méthode WebAssembly.instantiateStreaming(). Le module table2.wasm contient deux fonctions (une qui retourne 42 et une autre qui retourne 83) et les stocke dans les éléments 0 et 1 du tableau importé (voir représentation textuelle (angl.)). Ainsi, après l'instanciation, le tableau a toujours une longueur de 2, mais les éléments contiennent maintenant des fonctions WebAssembly exportées appelables depuis JS.
WebAssembly.instantiateStreaming(fetch("table2.wasm"), importObject).then(
(obj) => {
console.log(tbl.length);
console.log(tbl.get(0)());
console.log(tbl.get(1)());
},
);
Notez qu'il faut inclure un second opérateur d'invocation de fonction à la fin de l'accesseur pour réellement invoquer la fonction référencée et enregistrer la valeur qu'elle contient (par exemple, get(0)() plutôt que get(0)).
Cet exemple montre que nous créons et accédons au tableau depuis JavaScript, mais le même tableau est également visible et appelable à l'intérieur de l'instance Wasm.
Spécifications
| Spécification |
|---|
| WebAssembly JavaScript Interface> # tables> |