[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/WebAssembly/Reference/JavaScript_interface/Table [Back]  [Original]

WebAssembly.Table - WebAssembly | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

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 reprsentant un tableau WebAssembly, lequel stocke des rfrences homognes. 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 rfrences des fonctions ou des rfrences htes, mais cette fonctionnalit sera vraisemblablement tendue par la suite.

Dans cet article

Constructeur

WebAssembly.Table()

Cre un nouvel objet Table.

Proprits d'instance

Table.prototype.length Lecture seule

Retourne la longueur du tableau, c'est--dire le nombre d'lments dans le tableau.

Mthodes d'instance

Table.prototype.get()

Fonction accesseur obtient l'lment stock un index donn.

Table.prototype.grow()

Augmente la taille de l'instance Table d'un nombre dfini d'lments.

Table.prototype.set()

Dfinit un lment stock un index donn avec une valeur donne.

Exemples

Crer une nouvelle instance de Table WebAssembly

L'exemple suivant (voir table2.html code source (angl.) et version en ligne (angl.)) cre une nouvelle instance de Table WebAssembly avec une taille initiale de 2 lments. 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 lments sont null.

js
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 crons ensuite un objet d'importation qui contient le tableau :

js
const importObj = {
  js: { tbl },
};

Enfin, nous chargeons et instancions un module Wasm (table2.wasm) en utilisant la mthode WebAssembly.instantiateStreaming(). Le module table2.wasm contient deux fonctions (une qui retourne 42 et une autre qui retourne 83) et les stocke dans les lments 0 et 1 du tableau import (voir reprsentation textuelle (angl.)). Ainsi, aprs l'instanciation, le tableau a toujours une longueur de 2, mais les lments contiennent maintenant des fonctions WebAssembly exportes appelables depuis JS.

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 oprateur d'invocation de fonction la fin de l'accesseur pour rellement invoquer la fonction rfrence et enregistrer la valeur qu'elle contient (par exemple, get(0)() plutt que get(0)).

Cet exemple montre que nous crons et accdons au tableau depuis JavaScript, mais le mme tableau est galement visible et appelable l'intrieur de l'instance Wasm.

Spcifications

Spcification
WebAssembly JavaScript Interface
# tables

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page