WebAssembly.Global
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨März 2020â©.
Ein WebAssembly.Global Objekt stellt eine Instanz einer globalen Variablen dar, die sowohl von JavaScript aus zugänglich ist als auch über eine oder mehrere WebAssembly.Module-Instanzen importiert oder exportiert werden kann. Dies ermöglicht das dynamische Verknüpfen mehrerer Module.
Konstruktor
WebAssembly.Global()-
Erstellt ein neues
Global-Objekt.
Globale Instanzen
Alle Global-Instanzen erben von dem Prototyp-Objekt des Global()-Konstruktors â dies kann geändert werden, um alle Global-Instanzen zu beeinflussen.
Instanzeigenschaften
Global.prototype.constructor-
Gibt die Funktion zurück, die die Instanz dieses Objekts erstellt hat. StandardmäÃig ist dies der
WebAssembly.Global()Konstruktor. Global.prototype[Symbol.toStringTag]-
Der Anfangswert der
[Symbol.toStringTag]-Eigenschaft ist der String-Wert "WebAssembly.Global". Global.prototype.value-
Der Wert, der in der globalen Variable enthalten ist â dieser kann verwendet werden, um den Wert der globalen Variable direkt zu setzen und abzurufen.
Instanzmethoden
Global.prototype.valueOf()-
Althergebrachte Methode, die den in der globalen Variable enthaltenen Wert zurückgibt.
Beispiele
>Erstellen einer neuen Global-Instanz
Das folgende Beispiel zeigt die Erstellung einer neuen globalen Instanz mit dem WebAssembly.Global() Konstruktor. Sie wird als mutable i32-Typ mit einem Wert von 0 definiert.
Der Wert der globalen Variable wird dann zuerst mit der Global.value-Eigenschaft auf 42 geändert und anschlieÃend auf 43 mit der incGlobal()-Funktion geändert, die aus dem global.wasm Modul exportiert wird (dies fügt 1 zu dem übergebenen Wert hinzu und gibt dann den neuen Wert zurück).
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(
"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);
},
);
Hinweis: Sie können das Beispiel live auf GitHub ausführen; siehe auch den Quellcode.
Spezifikationen
| Specification |
|---|
| WebAssembly JavaScript Interface > # globals > |