From f984223597d974185ca4231b6c084fc8ab6272db Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO <mfujimot@gmail.com>
Date: Tue, 7 Sep 2021 23:23:34 +0900
Subject: Global_Objects/WebAssembly/Instance を更新
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Markdown に変換
- 2021/09/06 時点の英語版に同期
---
 .../global_objects/webassembly/instance/index.md   | 79 ++++++++++++++++++++++
 1 file changed, 79 insertions(+)
 create mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/instance/index.md

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)
-- 
cgit v1.2.3-54-g00ecf