[proxy] developer.mozilla.org← back | site home | direct (HTTPS) ↗ | proxy home | ◑ dark◐ light

WebAssembly.Global - WebAssembly | MDN

Constructor

WebAssembly.Global()

Creates a new Global object.

Global instances

All Global instances inherit from the Global() constructor's prototype object — this can be modified to affect all Global instances.

Instance properties

Global.prototype.constructor

Returns the function that created this object's instance. By default this is the WebAssembly.Global() constructor.

Global.prototype[Symbol.toStringTag]

The initial value of the [Symbol.toStringTag] property is the String value "WebAssembly.Global".

Global.prototype.value

The value contained inside the global variable — this can be used to directly set and get the global's value.

Instance methods

Global.prototype.valueOf()

Old-style method that returns the value contained inside the global variable.

Examples

Creating a new Global instance

The following example shows a new global instance being created using the WebAssembly.Global() constructor. It is being defined as a mutable i32 type, with a value of 0.

The value of the global is then changed, first to 42 using the Global.value property, and then to 43 using the incGlobal() function exported out of the global.wasm module (this adds 1 to whatever value is given to it and then returns the new value).

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

Specifications

Specification
WebAssembly JavaScript Interface
# globals

Browser compatibility

See also

Help improve MDN

Learn how to contribute

This page was last modified on by MDN contributors.