WebAssembly.Instance.prototype.exports

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.

exportsWebAssembly.Instance オブジェクトプロトタイプの読み取り専用プロパティで、 WebAssembly モジュールインスタンスからエクスポートされたすべての関数をメンバ-として持つオブジェクトを返します。これらは、 JavaScript からアクセスして使用することができます。

js
instance.exports;

exports の使用

fetch を使用して WebAssembly バイトコードを読み取った後、 WebAssembly.instantiateStreaming() 関数を使用してモジュールをコンパイルし、インスタンス化し、 JavaScript 関数をそのプロセスの WebAssembly モジュールにインポートします。その後、 Instance からエクスポートされたエクスポート済み WebAssembly 関数を呼び出します。

js
var importObject = {
  imports: {
    imported_func: function (arg) {
      console.log(arg);
    },
  },
};

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

メモ: この例は GitHub 上の instantiate-streaming.html (実行例) で見ることができます。

仕様書

Specification
WebAssembly JavaScript Interface
# dom-instance-exports

ブラウザーの互換性

BCD tables only load in the browser

関連情報