diff options
author | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2021-09-07 23:23:34 +0900 |
---|---|---|
committer | potappo <potappo@gmail.com> | 2021-09-18 16:13:46 +0900 |
commit | f984223597d974185ca4231b6c084fc8ab6272db (patch) | |
tree | 3b02fbc4fc772c1938a5323b184f508dc3553b6c /files/ja/web | |
parent | 5bf137db043919f317c74c3c65075a021156be62 (diff) | |
download | translated-content-f984223597d974185ca4231b6c084fc8ab6272db.tar.gz translated-content-f984223597d974185ca4231b6c084fc8ab6272db.tar.bz2 translated-content-f984223597d974185ca4231b6c084fc8ab6272db.zip |
Global_Objects/WebAssembly/Instance を更新
- Markdown に変換
- 2021/09/06 時点の英語版に同期
Diffstat (limited to 'files/ja/web')
-rw-r--r-- | files/ja/web/javascript/reference/global_objects/webassembly/instance/index.md | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/instance/index.md b/files/ja/web/javascript/reference/global_objects/webassembly/instance/index.md new file mode 100644 index 0000000000..a4254c0650 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/webassembly/instance/index.md @@ -0,0 +1,79 @@ +--- +title: WebAssembly.Instance +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance +tags: + - クラス + - JavaScript + - リファレンス + - WebAssembly +browser-compat: javascript.builtins.WebAssembly.Instance +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance +--- +{{JSRef}} + +**`WebAssembly.Instance`** オブジェクトは、ステートフルで実行可能な {{jsxref("WebAssembly.Module")}} のインスタンスです。 `Instance` オブジェクトには JavaScript から WebAssembly コードを呼び出すことができるすべての[エクスポートされた WebAssembly 関数](/ja/docs/WebAssembly/Exported_functions)が含まれます。 + +## コンストラクター + +- [`WebAssembly.Instance()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/Instance) + - : 新しい `Instance` オブジェクトを生成します。 + +## インスタンスプロパティ + +- {{jsxref("WebAssembly/Instance/exports", "Instance.prototype.exports")}} + - : メンバーとして WebAssembly モジュールのインスタンスからエクスポートされたすべての関数を含むオブジェクトを返します。 JavaScript からアクセスしたり使用したりすることができます。読み取り専用です。 + +## 例 + +### WebAssembly モジュールの同期的なインスタンス化 + +`WebAssembly.Instance()` コンストラクター関数は、次のように呼び出して指定された {{jsxref("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` を取得するには非同期で行うことを推奨します。例えば、 {{jsxref("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` プロパティを使ってエクスポートされた関数にアクセスする方法も紹介しています。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [WebAssembly](/ja/docs/WebAssembly) 概要ページ +- [WebAssembly の概念](/ja/docs/WebAssembly/Concepts) +- [WebAssembly JavaScript API の使用](/ja/docs/WebAssembly/Using_the_JavaScript_API) |