WebAssembly.Instance
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 プロパティを使ってエクスポートされた関数にアクセスする方法も紹介しています。
仕様書
| Specification |
|---|
| WebAssembly JavaScript Interface # instances |
ブラウザーの互換性
BCD tables only load in the browser