The WebAssembly JavaScript object acts as the namespace for all WebAssembly-related functionality.
Unlike most other global objects, WebAssembly is not a constructor (it is not a function object). You can compare it to Math, which is also a namespace object for mathematical constants and functions, or to Intl which is the namespace object for internationalization constructors and other language-sensitive functions.
The primary uses for the WebAssembly object are:
WebAssembly.instantiate() function.WebAssembly.Memory()/WebAssembly.Table() constructors.WebAssembly.CompileError()/WebAssembly.LinkError()/WebAssembly.RuntimeError() constructors.WebAssembly.CompileErrorIndicates an error during WebAssembly decoding or validation.
WebAssembly.GlobalRepresents a global variable instance, accessible from both JavaScript and importable/exportable across one or more WebAssembly.Module instances. This allows dynamic linking of multiple modules.
WebAssembly.InstanceIs a stateful, executable instance of a WebAssembly.Module
WebAssembly.LinkErrorIndicates an error during module instantiation (besides traps from the start function).
WebAssembly.MemoryAn object whose buffer property is a resizable ArrayBuffer that holds the raw bytes of memory accessed by a WebAssembly Instance.
WebAssembly.ModuleContains stateless WebAssembly code that has already been compiled by the browser and can be efficiently shared with Workers, and instantiated multiple times.
WebAssembly.RuntimeErrorError type that is thrown whenever WebAssembly specifies a trap.
WebAssembly.SuspendingRepresents a suspending function — an asynchronous (Promise-based) JavaScript function that, when imported into a Wasm module and called from inside, will result in execution being suspended until the promise resolves.
WebAssembly.TableAn array-like structure representing a WebAssembly Table, which stores references, such as function references.
WebAssembly.TagAn object that represents a type of WebAssembly exception.
WebAssembly.ExceptionA WebAssembly exception object that can be thrown, caught, and rethrown both within and across WebAssembly/JavaScript boundaries.
WebAssembly.JSTagA built-in WebAssembly.Tag representing exceptions thrown in the JavaScript host — it allows exceptions thrown in JavaScript to be handled from inside a Wasm module.
WebAssembly.compile()Compiles a WebAssembly.Module from WebAssembly binary code, leaving instantiation as a separate step.
WebAssembly.compileStreaming()Compiles a WebAssembly.Module directly from a streamed underlying source, leaving instantiation as a separate step.
WebAssembly.instantiate()The primary API for compiling and instantiating WebAssembly code, returning both a Module and its first Instance.
WebAssembly.instantiateStreaming()Compiles and instantiates a WebAssembly module directly from a streamed underlying source, returning both a Module and its first Instance.
WebAssembly.promising()Wraps an exported Wasm function that relies on an asynchronous operation (that is, an imported suspending function created via the WebAssembly.Suspending() constructor), turning it into a Promise.
WebAssembly.validate()Validates a given typed array of WebAssembly binary code, returning whether the bytes are valid WebAssembly code (true) or not (false).
The following example (see our instantiate-streaming.html demo on GitHub, and view it live also) directly streams a Wasm module from an underlying source then compiles and instantiates it, the promise fulfilling with a ResultObject. Because the instantiateStreaming() function accepts a promise for a Response object, you can directly pass it a fetch() call, and it will pass the response into the function when it fulfills.
const importObject = {
my_namespace: { imported_func: (arg) => console.log(arg) },
};
WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
(obj) => obj.instance.exports.exported_func(),
);The ResultObject's .instance property is then accessed, and the contained exported function invoked.