Constructeur WebAssembly.Table()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.
Le constructeur WebAssembly.Table()
crée un nouvel objet Table
de la taille et du type d'élément donné.
Syntaxe
new WebAssembly.Table(descripteurTable);
Paramètres
- descripteurTable
-
Un objet qui peut contenir les propriétés suivantes :
element
-
Une chaîne de caractères représentant le type de valeur à stocker dans la table. Pour le moment, sa valeur ne peut être que
"anyfunc"
(indiquant les fonctions). initial
-
Le nombre initial d'éléments dans la table WebAssembly.
- maximum Facultatif
-
Le nombre maximal d'éléments jusqu'auquel la table WebAssembly peut grandir.
Exceptions
- Si
descripteurTable
n'est pas un objet, une exceptionTypeError
sera levée. - Si
maximum
est fourni et est inférieur àinitial
, une exceptionRangeError
sera levée.
Exemples
Créer une nouvelle instance d'une Table WebAssembly
Dans l'exemple suivant (voir le code source et la démo live correspondants), on crée une nouvelle instance d'une table WebAssembly avec une taille initiale de 2 éléments. On affiche alors la longueur de la table et son contenu (grâce à Table.prototype.get()
pour montrer que la longueur vaut 2 et que les deux éléments sont null
.
var 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"
On peut ensuite créer un objet d'import qui contient la table :
var importObj = {
js: {
tbl: tbl,
},
};
Enfin, on charge et on instancie un module WASM (table2.wasm) en utilisant la méthode WebAssembly.instantiateStreaming()
. Le module table2.wasm contient deux fonctions (une qui renvoie 42 et l'autre qui renvoie 83) et on stocke ces deux fonctions dans les éléments 0 et 1 de la table importée (voir la représentation textuelle). Ainsi, après l'instanciation, la table a toujours une longueur qui vaut 2 et les éléments contiennent désormais des fonctions WebAssembly exportées qu'on peut appeler depuis le code JavaScript.
WebAssembly.instantiateStreaming(fetch("table2.wasm"), importObject).then(
function (obj) {
console.log(tbl.length);
console.log(tbl.get(0)());
console.log(tbl.get(1)());
},
);
On notera qu'il faut inclure une deuxième paire de parenthèses afin d'invoquer la fonction référencée et d'afficher la valeur qui y est stockée (on écrit donc get(0)()
plutôt que get(0)
) .
Dans cet exemple, on illustre la création et l'accès à la table depuis du code JavaScript, mais cette même table est visible depuis l'instance WASM également.
Spécifications
Specification |
---|
WebAssembly JavaScript Interface # dom-table-table |
Compatibilité des navigateurs
BCD tables only load in the browser