WebAssembly.Instance

Baseline 已廣泛支援

此功能已非常成熟,可在多種裝置和瀏覽器版本上使用。自 2017 年 10 月以來,它已在各大瀏覽器中可用。

WebAssembly.Instance 物件是 WebAssembly.Module 的一個有狀態的可執行例項。Instance 物件包含所有 匯出的 WebAssembly 函式,這些函式允許從 JavaScript 呼叫 WebAssembly 程式碼。

建構函式

WebAssembly.Instance()

建立一個新的 Instance 物件。

例項屬性

exports

返回一個物件,該物件包含 WebAssembly 模組例項匯出的所有函式作為其成員,以便 JavaScript 可以訪問和使用它們。只讀。

示例

同步例項化 WebAssembly 模組

可以呼叫 WebAssembly.Instance() 建構函式來同步例項化給定的 WebAssembly.Module 物件,例如:

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();
  });

獲取 Instance 的首選方法是非同步的,例如使用 WebAssembly.instantiateStreaming() 函式,如下所示:

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

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

這還演示瞭如何使用 exports 屬性來訪問匯出的函式。

規範

規範
WebAssembly JavaScript 介面
# instances

瀏覽器相容性

另見