Content-Length: 249487 | pFad | http://developer.mozilla.org/ja/docs/WebAssembly/Reference/JavaScript_interface/Global/Global

WebAssembly.Global() コンストラクター - WebAssembly | MDN

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

View in English Always switch to English

WebAssembly.Global() コンストラクター

Baseline 広く利用可能

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

WebAssembly.Global() コンストラクターは、グローバル変数のインスタンスを表す新しい Global オブジェクトを表します。これは JavaScript からアクセス可能で、1 つ以上の WebAssembly.Module インスタンスの間でインポート/エクスポート可能です。これにより、複数のモジュールを動的リンクすることができます。

構文

js
new WebAssembly.Global(descriptor, value)

引数

descriptor

オブジェクトで、 2 つのプロパティを持ちます。

value

文字列で、そのグローバル変数のデータ型を表します。 これは以下のいずれかです。

  • i32: 32 ビット整数。
  • i64: 64 ビット整数。(JavaScript では、これは BigInt として表される)
  • f32: 32 ビット浮動小数点数。
  • f64: 64 ビット浮動小数点数。
  • funcref
  • externref
mutable

論理値で、そのグローバル変数が変更可能であるかどうかを表します。デフォルトでは false です。

value

変数が保持する値です。変数のデータ型に合う限り、どんな値でも取れます。 もしも何の値も渡されないと、descriptor.value の値が i32i64f32f64 のいずれかである場合は型付きの 0 が使用され、descriptor.valueexternref または anyfunc であれば、null が使用されます。

新しい Global インスタンスの生成

以下の例では、新しいグローバルインスタンスが WebAssembly.Global() コンストラクターを用いて生成されます。 変更可能 (mutable) な i32 型として定義され、値は 0 です。

その後、グローバルの値は、まず Global.value プロパティを使用して 42 に変更され、次に global.wasm モジュールからエクスポートされた incGlobal() 関数を使用して 43 に変更されます(これは、与えられた値に 1 を追加してから新しい値を返します)。

js
const output = document.getElementById("output");

function assertEq(msg, got, expected) {
  const result =
    got === expected
      ? `SUCCESS! Got: ${got}\n`
      : `FAIL!\nGot: ${got}\nExpected: ${expected}\n`;
  output.innerText += `Testing ${msg}: ${result}`;
}

assertEq("WebAssembly.Global exists", typeof WebAssembly.Global, "function");

const global = new WebAssembly.Global({ value: "i32", mutable: true }, 0);

WebAssembly.instantiateStreaming(fetch("global.wasm"), { js: { global } }).then(
  ({ instance }) => {
    assertEq(
      "初期値を wasm から取得",
      instance.exports.getGlobal(),
      0,
    );
    global.value = 42;
    assertEq(
      "JS が更新した値を wasm から取得",
      instance.exports.getGlobal(),
      42,
    );
    instance.exports.incGlobal();
    assertEq("wasm が更新した値を JS から取得", global.value, 43);
  },
);

メモ: この例は GitHub 上の実行例で確認できます。また、ソースコードも参照してください。

仕様書

仕様書
WebAssembly JavaScript Interface
# dom-global-global

ブラウザーの互換性

関連情報









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://developer.mozilla.org/ja/docs/WebAssembly/Reference/JavaScript_interface/Global/Global

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy