[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/WebAssembly/Reference/JavaScript_interface/Global/Global [Back]  [Original]

WebAssembly.Global() Konstruktor - WebAssembly | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

WebAssembly.Global() Konstruktor

Baseline Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Mrz 2020 browserbergreifend verfgbar.

Ein WebAssembly.Global() Konstruktor erstellt ein neues Global-Objekt, das eine Instanz einer globalen Variablen darstellt, die sowohl von JavaScript zugnglich als auch ber ein oder mehrere WebAssembly.Module Instanzen importierbar/exportierbar ist. Dies ermglicht die dynamische Verknpfung mehrerer Module.

In diesem Artikel

Syntax

js
new WebAssembly.Global(descriptor, value)

Parameter

descriptor

Ein Objekt, das zwei Eigenschaften enthlt:

value

Ein String, der den Datentyp der globalen Variablen darstellt. Dies kann sein:

  • i32: Ein 32-Bit-Ganzzahl.
  • i64: Ein 64-Bit-Ganzzahl. (In JavaScript wird dies als BigInt dargestellt)
  • f32: Eine 32-Bit-Gleitkommazahl.
  • f64: Eine 64-Bit-Gleitkommazahl.
  • funcref
  • externref
mutable

Ein boolescher Wert, der bestimmt, ob die globale Variable vernderlich ist oder nicht. Standardmig ist dies false.

value

Der Wert, den die Variable enthlt. Dies kann jeder Wert sein, solange sein Typ mit dem Datentyp der Variablen bereinstimmt. Wenn kein Wert angegeben wird, wird ein typisierter 0-Wert verwendet, wenn der Wert von descriptor.value einer der i32, i64, f32 oder f64 ist, und null wird verwendet, wenn descriptor.value externref oder anyfunc ist.

Beispiele

Erstellen einer neuen Global-Instanz

Das folgende Beispiel zeigt, wie eine neue globale Instanz mit dem WebAssembly.Global() Konstruktor erstellt wird. Sie wird als vernderlicher i32-Typ definiert, mit einem Wert von 0.

Der Wert der globalen Variable wird dann gendert, zuerst auf 42 mit der Eigenschaft Global.value, und dann auf 43 mit der Funktion incGlobal(), die aus dem global.wasm Modul exportiert wird (diese addiert 1 zu jedem bergebenen Wert und gibt dann den neuen Wert zurck).

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

Hinweis: Sie knnen das Beispiel live auf GitHub ausfhren; siehe auch den Quellcode.

Spezifikationen

Spezifikation
WebAssembly JavaScript Interface
# dom-global-global

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page