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

WebAssembly.Table() Konstruktor - 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() Konstruktor

Baseline Weitgehend verfgbar

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.

In diesem Artikel

Syntax

js
new WebAssembly.Table(tableDescriptor)
new WebAssembly.Table(tableDescriptor, value)

Parameter

tableDescriptor

Ein Objekt, das die folgenden Mitglieder enthalten kann:

element

Ein String, der den Typ des gespeicherten Wertes in der Tabelle reprsentiert. Dies kann den Wert "anyfunc" (Funktionen) oder "externref" (Host-Referenzen) haben.

initial

Die anfngliche Anzahl der Elemente der WebAssembly-Tabelle.

maximum Optional

Die maximale Anzahl der Elemente, auf die die WebAssembly-Tabelle anwachsen darf.

value Optional

Das Element, mit dem der neu zugewiesene Speicherplatz gefllt wird.

Ausnahmen

  • Wenn tableDescriptor kein Objekt ist, wird ein TypeError ausgelst.
  • Wenn maximum angegeben ist und kleiner als initial ist, wird ein RangeError ausgelst.
  • Wenn element nicht einer der Referenztypen ist, wird ein TypeError ausgelst.
  • Wenn value kein Wert des Typs element ist, wird ein TypeError ausgelst.

Beispiele

Erstellen einer neuen WebAssembly-Tabelle

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:

  1. table2.html: Eine HTML-Seite, die JavaScript enthlt, das eine WebAssembly.Table erstellt und manipuliert (Quellcode)
  2. 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:

js
const tbl = new WebAssembly.Table({
  initial: 2,
  element: "anyfunc",
});

Wir knnen die Indexinhalte mit Table.prototype.get() abrufen:

js
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:

js
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:

wat
(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():

js
const instantiating = WebAssembly.instantiateStreaming(
  fetch("table2.wasm"),
  importObject,
);

Nach der Instanziierung von table2.wasm wird tbl mit Folgendem aktualisiert:

  • Die Tabellengre bleibt bei 2
  • Der Inhalt fr Index 0 ist jetzt eine Funktion, die 42 zurckgibt
  • Der Inhalt fr Index 1 ist jetzt eine Funktion, die 83 zurckgibt

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:

js
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.

Erstellen einer neuen WebAssembly-Tabelle mit einem Wert

Das folgende Beispiel erstellt eine neue WebAssembly-Tabelle mit 4 Elementen, gefllt mit demselben Objekt:

js
const myObject = { hello: "world" };

const table = new WebAssembly.Table(
  {
    element: "externref",
    initial: 4,
    maximum: 4,
  },
  myObject,
);

console.log(myObject === table.get(2)); // true

Spezifikationen

Spezifikation
WebAssembly JavaScript Interface
# dom-table-table

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page