WebAssembly.Instance

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.

Ein WebAssembly.Instance Objekt ist eine zustandsbehaftete, ausführbare Instanz eines WebAssembly.Module. Instance-Objekte enthalten alle exportierten WebAssembly-Funktionen, die es ermöglichen, aus JavaScript auf WebAssembly-Code zuzugreifen.

Konstruktor

WebAssembly.Instance()

Erstellt ein neues Instance-Objekt.

Instanzeigenschaften

exports

Gibt ein Objekt zurück, das alle aus der WebAssembly-Modulinstanz exportierten Funktionen als seine Mitglieder enthält, sodass sie von JavaScript aus zugänglich und nutzbar sind. Nur lesbar.

Beispiele

Synchrones Instanziieren eines WebAssembly-Moduls

Die WebAssembly.Instance() Konstruktorfunktion kann aufgerufen werden, um synchron ein gegebenes WebAssembly.Module Objekt zu instanziieren, zum Beispiel:

js
const importObject = {
  my_namespace: {
    imported_func(arg) {
      console.log(arg);
    },
  },
};

fetch("simple.wasm")
  .then((response) => response.arrayBuffer())
  .then((bytes) => {
    const mod = new WebAssembly.Module(bytes);
    const instance = new WebAssembly.Instance(mod, importObject);
    instance.exports.exported_func();
  });

Der bevorzugte Weg, um eine Instance zu erhalten, ist asynchron, zum Beispiel durch die Verwendung der WebAssembly.instantiateStreaming() Funktion wie folgt:

js
const importObject = {
  my_namespace: {
    imported_func(arg) {
      console.log(arg);
    },
  },
};

WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
  (obj) => obj.instance.exports.exported_func(),
);

Dies zeigt auch, wie die exports-Eigenschaft verwendet wird, um auf exportierte Funktionen zuzugreifen.

Spezifikationen

Specification
WebAssembly JavaScript Interface
# instances

Browser-Kompatibilität

Siehe auch