Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
WebAssembly.Global
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2020 browserübergreifend verfügbar.
Ein WebAssembly.Global-Objekt repräsentiert eine globale Variableninstanz, die sowohl von JavaScript aus zugänglich als auch über ein oder mehrere WebAssembly.Module-Instanzen importierbar/exportierbar ist. Dies ermöglicht die dynamische Verknüpfung mehrerer Module.
Konstruktor
WebAssembly.Global()-
Erstellt ein neues
Global-Objekt.
Globale Instanzen
Alle Global-Instanzen erben vom Prototyp-Objekt des Global()-Konstruktors – dies kann modifiziert werden, um alle Global-Instanzen zu beeinflussen.
Instanz-Eigenschaften
Global.prototype.value-
Der Wert, der in der globalen Variablen enthalten ist. Dies kann verwendet werden, um den Wert des
Globaldirekt zu setzen und abzurufen. 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 anfängliche Wert der
[Symbol.toStringTag]-Eigenschaft ist der String-Wert "WebAssembly.Global".
Instanz-Methoden
Global.prototype.valueOf()-
Gibt den Wert zurück, der in der globalen Variablen enthalten ist.
Beispiele
>Erstellen einer neuen Global-Instanz
Das folgende Beispiel zeigt eine neue globale Instanz, die mit dem WebAssembly.Global()-Konstruktor erstellt wird. Es wird als veränderlicher i32-Typ mit einem Wert von 0 definiert.
Der Wert der globalen Variablen wird dann geändert, zuerst auf 42 mithilfe der Global.value-Eigenschaft und dann auf 43 mithilfe der incGlobal()-Funktion, die aus dem global.wasm-Modul exportiert wird (dies fügt 1 zu jedem gegebenen 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
| Spezifikation |
|---|
| WebAssembly JavaScript Interface> # globals> |
Browser-Kompatibilität
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.