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

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

Baseline Weitgehend verfgbar

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

Die set() Prototyp-Methode des WebAssembly.Table-Objekts ndert eine in einem bestimmten Index gespeicherte Referenz in einen anderen Wert.

In diesem Artikel

Syntax

js
set(index, value)

Parameter

index

Der Index der Funktionsreferenz, die Sie ndern mchten.

value

Der Wert, auf den Sie die Referenz ndern mchten. Dies muss ein Wert des Elementtyps der Tabelle sein. Abhngig vom Typ kann es eine exportierte WebAssembly-Funktion, ein JavaScript-Wrapper fr eine zugrunde liegende Wasm-Funktion oder eine Host-Referenz sein.

Rckgabewert

Keiner (undefined).

Ausnahmen

Beispiele

Verwendung von Table.set

Das folgende Beispiel (siehe table2.html Quellcode und Live-Version) erstellt eine neue WebAssembly-Tabelle mit einer anfnglichen Gre von zwei Referenzen. Anschlieend geben wir die Tabellenlnge und die Inhalte der beiden Indizes aus (abgerufen ber Table.prototype.get()), um zu zeigen, dass die Lnge zwei betrgt und die Indizes derzeit keine Funktionsreferenzen enthalten (sie geben aktuell null zurck).

js
const tbl = new WebAssembly.Table({ initial: 2, element: "anyfunc" });
console.log(tbl.length);
console.log(tbl.get(0));
console.log(tbl.get(1));

Wir erstellen dann ein Importobjekt, das eine Referenz auf die Tabelle enthlt:

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

Abschlieend laden und instanziieren wir ein Wasm-Modul (table2.wasm) mit WebAssembly.instantiateStreaming(), drucken die Tabellenlnge und rufen die zwei Funktionsreferenzen auf, die jetzt in der Tabelle gespeichert sind. Das table2.wasm-Modul fgt der Tabelle zwei Funktionsreferenzen hinzu, die beide einen einfachen Wert ausgeben (siehe Textdarstellung):

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 am Ende des Zugriffsoperators einen zweiten Funktionsaufrufsoperator einfgen 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 ist auch innerhalb der Wasm-Instanz sichtbar und aufrufbar.

Spezifikationen

Spezifikation
WebAssembly JavaScript Interface
# dom-table-set

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page