Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

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

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 un module WebAssembly (table2.wasm) grâce à la fonction utilitaire fetchAndInstantiate(), on imprime la longueur du tableau et on invoque les deux fonctions référencées qui sont désormais stockées dans le tableau (on peut voir, grâce à sa représentation textuelle, que le module table2.wasm ajoute deux références de fonctions au tableau dont chacune produit une valeur simple) :

fetchAndInstantiate('table2.wasm', importObject).then(function(instance) {
  console.log(tbl.length);
  console.log(tbl.get(0)());
  console.log(tbl.get(1)());
});

On voit ici qu'il est nécessaire d'ajouter un couple de parenthèses après l'utilisation de get() afin d'obtenir le résultat des fonctions car get() fournit une fonction et non la valeur qu'elle produit (autrement dit, si on souhaite manipuler le résultat de la référence, il faut écrire get(0)() plutôt que get(0)) .

Dans cet exemple, on crée et on manipule le tableau grâce à du code JavaScript mais ce même tableau WebAssembly est également visible et manipulable depuis l'instance WebAssembly.

Spécifications

Spécification État Commentaires
Web Assembly JavaScript API
La définition de 'set()' dans cette spécification.
Projet Brouillon de définition initiale pour WebAssembly.

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple5716522 Non4411
FonctionnalitéAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Support simple5757 (Oui)1522 Non ?11

1. , this feature is behind the Experimental JavaScript Features preference.

2. Disabled in the Firefox 52 Extended Support Release (ESR).

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,