このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

WebAssembly.Instance

Baseline
広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2017年10月以降、すべてのブラウザーで利用可能です。

WebAssembly.Instance オブジェクトは、ステートフルで実行可能な WebAssembly.Module のインスタンスです。 Instance オブジェクトには JavaScript から WebAssembly コードを呼び出すことができるすべてのエクスポートされた WebAssembly 関数が含まれます。

コンストラクター

WebAssembly.Instance()

新しい Instance オブジェクトを生成します。

インスタンスプロパティ

Instance.prototype.exports

メンバーとして WebAssembly モジュールのインスタンスからエクスポートされたすべての関数を含むオブジェクトを返します。 JavaScript からアクセスしたり使用したりすることができます。読み取り専用です。

例

WebAssembly モジュールの同期的なインスタンス化

WebAssembly.Instance() コンストラクター関数は、次のように呼び出して指定された WebAssembly.Module オブジェクトを同期的にインスタンス化することができます。

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

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

Instance を取得するには非同期で行うことを推奨します。例えば、 WebAssembly.instantiateStreaming() 関数を使って次のようにします。

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

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

また、これは exports プロパティを使ってエクスポートされた関数にアクセスする方法も紹介しています。

仕様書

仕様書
WebAssembly JavaScript Interface
# instances

ブラウザーの互換性

関連情報