HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
View in English Always switch to English
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年3月.
WebAssembly.Global() コンストラクターは、グローバル変数のインスタンスを表す新しい Global オブジェクトを表します。これは JavaScript からアクセス可能で、1 つ以上の WebAssembly.Module インスタンスの間でインポート/エクスポート可能です。これにより、複数のモジュールを動的リンクすることができます。
WebAssembly.Global()
Global
WebAssembly.Module
new WebAssembly.Global(descriptor, value)
descriptor
オブジェクトで、 2 つのプロパティを持ちます。
value
i32
i64
BigInt
f32
f64
v128
externref
anyfunc
mutable
false
変数が保持する値です。変数のデータ型に合う限り、どんな値でも取れます。 もしも何の値も渡されないと、descriptor.value の値が i32、i64、f32、f64 のいずれかである場合は型付きの 0 が使用され、descriptor.value が externref または anyfunc であれば、null が使用されます(DefaultValue アルゴリズムで定義されているとおりです)。
descriptor.value
null
DefaultValue
以下の例は、WebAssembly.Global() コンストラクターを用いて生成された新しいグローバルインスタンスです。 これは変更可能 (mutable) な i32 型で、値は 0 です。
その後、グローバルの値は、まず Global.value プロパティを使用して 42 に変更され、次に global.wasm モジュールからエクスポートされた incGlobal() 関数を使用して 43 に変更されます(これは、与えられた値に 1 を追加してから新しい値を返します)。
Global.value
42
global.wasm
incGlobal()
const output = document.getElementById("output"); function assertEq(msg, got, expected) { const result = got === expected ? `SUCCESS! Got: ${got}<br>` : `FAIL!<br>Got: ${got}<br>Expected: ${expected}<br>`; output.innerHTML += `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( "getting initial value from wasm", instance.exports.getGlobal(), 0, ); global.value = 42; assertEq( "getting JS-updated value from wasm", instance.exports.getGlobal(), 42, ); instance.exports.incGlobal(); assertEq("getting wasm-updated value from JS", global.value, 43); }, );
メモ: この例は GitHub 上の実行例で確認できます。また、ソースコードも参照してください。
Enable JavaScript to view this browser compatibility table.