| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/WebAssembly/Reference/JavaScript_interface/Table/Table | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Oktober 2017 browserbergreifend verfgbar.
Der WebAssembly.Table() Konstruktor erstellt ein neues Table-Objekt mit der angegebenen Gre und dem Elementtyp, gefllt mit dem bereitgestellten Wert.
new WebAssembly.Table(tableDescriptor)
new WebAssembly.Table(tableDescriptor, value)
tableDescriptorEin Objekt, das die folgenden Mitglieder enthalten kann:
elementEin String, der den Typ des gespeicherten Wertes in der Tabelle reprsentiert. Dies kann den Wert "anyfunc" (Funktionen) oder "externref" (Host-Referenzen) haben.
initialDie anfngliche Anzahl der Elemente der WebAssembly-Tabelle.
maximum OptionalDie maximale Anzahl der Elemente, auf die die WebAssembly-Tabelle anwachsen darf.
value OptionalDas Element, mit dem der neu zugewiesene Speicherplatz gefllt wird.
tableDescriptor kein Objekt ist, wird ein TypeError ausgelst.maximum angegeben ist und kleiner als initial ist, wird ein RangeError ausgelst.element nicht einer der Referenztypen ist, wird ein TypeError ausgelst.value kein Wert des Typs element ist, wird ein TypeError ausgelst.Das folgende Beispiel erstellt eine WebAssembly.Table-Instanz mit einer anfnglichen Gre von 2 Elementen. Der Inhalt der WebAssembly.Table wird mit einem WebAssembly-Modul befllt und ist von JavaScript aus zugnglich. Wenn Sie das Live-Beispiel ansehen, ffnen Sie Ihre Entwicklerkonsole, um Konsolennachrichten aus den unten stehenden Code-Snippets anzuzeigen.
Dieses Beispiel verwendet die folgenden Referenzdateien:
table2.html: Eine HTML-Seite, die JavaScript enthlt, das eine WebAssembly.Table erstellt und manipuliert (Quellcode)table2.wat: Ein WebAssembly-Textformat-Modul, das in ein Binrformat konvertiert und vom JavaScript-Code in table2.html importiert wird (Quellcode)Hinweis: Eine vorab kompilierte WebAssembly-Binrdatei table2.wasm steht zum Download bereit.
In table2.html erstellen wir eine WebAssembly.Table:
const tbl = new WebAssembly.Table({
initial: 2,
element: "anyfunc",
});
Wir knnen die Indexinhalte mit Table.prototype.get() abrufen:
console.log(tbl.length); // a table with 2 elements
console.log(tbl.get(0)); // content for index 0 is null
console.log(tbl.get(1)); // content for index 1 is null
Als nchstes erstellen wir ein Importobjekt, das die WebAssembly.Table enthlt:
const importObject = {
js: { tbl },
};
Dann laden und instanziieren wir ein WebAssembly-Modul. Das table2.wasm-Modul definiert eine Tabelle, die zwei Funktionen enthlt. Die erste Funktion gibt 42 zurck, und die zweite gibt 83 zurck:
(module
(import "js" "tbl" (table 2 funcref))
(func $f42 (result i32) i32.const 42)
(func $f83 (result i32) i32.const 83)
(elem (i32.const 0) $f42 $f83)
)
Wir instanziieren table2.wasm mit der Methode WebAssembly.instantiateStreaming():
const instantiating = WebAssembly.instantiateStreaming(
fetch("table2.wasm"),
importObject,
);
Nach der Instanziierung von table2.wasm wird tbl mit Folgendem aktualisiert:
Die Elemente an den Indizes 0 und 1 der Tabelle sind jetzt aufrufbare Exportierte WebAssembly-Funktionen. Um sie aufzurufen, beachten Sie, dass wir den Funktionsaufrufsoperator () nach dem get() Aufruf hinzufgen mssen:
instantiating.then((obj) => {
console.log(tbl.length); // 2
console.log(tbl.get(0)()); // 42
console.log(tbl.get(1)()); // 83
});
Whrend wir die WebAssembly.Table von JavaScript aus erstellen und auf sie zugreifen, ist dieselbe Table auch innerhalb der WebAssembly-Instanz sichtbar und aufrufbar.
Das folgende Beispiel erstellt eine neue WebAssembly-Tabelle mit 4 Elementen, gefllt mit demselben Objekt:
const myObject = { hello: "world" };
const table = new WebAssembly.Table(
{
element: "externref",
initial: 4,
maximum: 4,
},
myObject,
);
console.log(myObject === table.get(2)); // true
| Spezifikation |
|---|
| WebAssembly JavaScript Interface # dom-table-table |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |