WebAssembly.Table.prototype.set()
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.
La méthode set()
, rattachée au prototype de WebAssembly.Table
, permet de modifier une référence de fonction stockée dans un tableau WebAssembly.
Syntaxe
table.set(index, valeur);
Paramètres
index
-
L'index de la référence de la fonction qu'on souhaite modifier.
valeur
-
La valeur par laquelle on souhaite remplacer la référence. Cette valeur doit être une fonction exportée WebAssembly (c'est-à-dire une enveloppe JavaScript représentant une fonction WebAssembly sous-jacente).
Valeur de retour
Aucune.
Exceptions
- Si
index
est supérieur ou égal àTable.prototype.length
, une exceptionRangeError
sera levée. - Si
valeur
n'est pas une fonction WebAssembly exportée ou la valeurnull
, une exceptionTypeError
sera levée.
Exemples
Dans l'exemple qui suit (basé sur le code source de table2.html
et qui dispose d'une démonstration), on crée ue nouvelle instance d'un tableau WebAssembly (Table
) qui permet initialement de stocker 2 référence. On imprime alors la longueur du tableau dans la console ainsi que le contenu pour les deux premiers index (obtenus grâce à la méthode Table.prototype.get()
) afin de montrer qu la longueur vaut 2 et qu'initialement, les deux éléments du tableau ne contiennent aucune référence (ils ont tous les deux la valeur null
).
var tbl = new WebAssembly.Table({ initial: 2, element: "anyfunc" });
console.log(tbl.length);
console.log(tbl.get(0));
console.log(tbl.get(1));
On crée ensuite un objet d'import qui contient une référence au tableau :
var importObj = {
js: {
tbl: tbl,
},
};
Enfin, on charge et on instancie le module WebAssembly (table2.wasm
) grâce à la méthode WebAssembly.instantiateStreaming()
, on logge la longueur du tableau et on appelle les deux fonctions référencées qui sont désormais dans le tableau (le module table2.wasm
(cf. la représentation textuelle) ajoute deux références de fonctions au tableau et chacune affiche une valeur simple) :
WebAssembly.instantiateStreaming(fetch("table2.wasm"), importObject).then(
function (obj) {
console.log(tbl.length);
console.log(tbl.get(0)());
console.log(tbl.get(1)());
},
);
On voit ici qu'il faut appeler la fonction après avoir appeler l'opérateur sur l'accesseur (autrement dit, on écrit get(0)()
plutôt que get(0)
) .
Dans cet exemple, on montre comment créer et manipuler un tableau en JavaScript mais ce tableau est également accessible et manipulable depuis l'instance WebAssembly.
Spécifications
Specification |
---|
WebAssembly JavaScript Interface # dom-table-set |
Compatibilité des navigateurs
BCD tables only load in the browser