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 Funktionen enthält, die aus der WebAssembly-Modulinstanz exportiert werden, damit diese von JavaScript aus zugegriffen und verwendet werden können. Nur-Lesezugriff.

Beispiele

Synchrones Instanziieren eines WebAssembly-Moduls

Die WebAssembly.Instance() Konstruktor-Funktion kann aufgerufen werden, um ein bestimmtes WebAssembly.Module-Objekt synchron 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, eine Instance zu erhalten, ist asynchron, zum Beispiel unter Verwendung der WebAssembly.instantiateStreaming()-Funktion, wie hier:

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

BCD tables only load in the browser

Siehe auch