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

WebAssembly.Table - WebAssembly | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

WebAssembly.Table

Baseline
Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Oktober 2017 browserbergreifend verfgbar.

Das WebAssembly.Table Objekt ist ein JavaScript-Wrapper-Objekt eine array-hnliche Struktur, die eine WebAssembly-Tabelle darstellt, welche homogene Referenzen speichert. Eine von JavaScript oder in WebAssembly-Code erstellte Tabelle ist sowohl von JavaScript als auch von WebAssembly zugnglich und vernderbar.

Hinweis: Tabellen knnen derzeit nur Funktionsreferenzen oder Host-Referenzen speichern, aber dies wird wahrscheinlich in Zukunft erweitert.

In diesem Artikel

Konstruktor

WebAssembly.Table()

Erstellt ein neues Table Objekt.

Instanzeigenschaften

Table.prototype.length Schreibgeschtzt

Gibt die Lnge der Tabelle zurck, das heit die Anzahl der Elemente in der Tabelle.

Instanzmethoden

Table.prototype.get()

Zugriffsfunktion holt das Element, das an einem bestimmten Index gespeichert ist.

Table.prototype.grow()

Erhht die Gre der Table Instanz um eine angegebene Anzahl von Elementen.

Table.prototype.set()

Setzt ein Element, das an einem bestimmten Index gespeichert ist, auf einen angegebenen Wert.

Beispiele

Erstellen einer neuen WebAssembly Table Instanz

Das folgende Beispiel (siehe table2.html Quellcode und Live-Version) erstellt eine neue WebAssembly Table Instanz mit einer Anfangsgre von 2 Elementen. Wir drucken dann die Tabellenlnge und den Inhalt der beiden Indizes aus (abgerufen ber Table.prototype.get()), um zu zeigen, dass die Lnge zwei ist und beide Elemente null sind.

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"

Dann erstellen wir ein Import-Objekt, das die Tabelle enthlt:

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

Abschlieend laden und instanziieren wir ein Wasm-Modul (table2.wasm) mit der Methode WebAssembly.instantiateStreaming(). Das table2.wasm-Modul enthlt zwei Funktionen (eine, die 42 zurckgibt, und eine andere, die 83 zurckgibt) und speichert beide in den Elementen 0 und 1 der importierten Tabelle (siehe Textdarstellung). Nach der Instanziierung hat die Tabelle immer noch die Lnge 2, aber die Elemente enthalten nun aufrufbare Exportierte WebAssembly-Funktionen, die wir aus JS aufrufen knnen.

js
WebAssembly.instantiateStreaming(fetch("table2.wasm"), importObject).then(
  (obj) => {
    console.log(tbl.length);
    console.log(tbl.get(0)());
    console.log(tbl.get(1)());
  },
);

Beachten Sie, dass Sie einen zweiten Funktionsaufrufsoperator am Ende des Zugriffs verwenden mssen, um die referenzierte Funktion tatschlich aufzurufen und den darin gespeicherten Wert zu protokollieren (z. B. get(0)() anstelle von get(0)).

Dieses Beispiel zeigt, dass wir die Tabelle von JavaScript aus erstellen und darauf zugreifen, aber dieselbe Tabelle auch innerhalb der Wasm-Instanz sichtbar und aufrufbar ist.

Spezifikationen

Spezifikation
WebAssembly JavaScript Interface
# tables

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page