◐ Shell
clean mode source ↗

WebAssembly.Global - WebAssembly | MDN

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 Global direkt 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).

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(
      "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);
  },
);

Spezifikationen

Spezifikation
WebAssembly JavaScript Interface
# globals

Browser-Kompatibilität

Siehe auch