WebAssembly.Instance
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.
A WebAssembly.Instance object is a stateful, executable instance of a WebAssembly.Module. Instance objects contain all the Exported WebAssembly functions that allow calling into WebAssembly code from JavaScript.
Constructor
WebAssembly.Instance()-
Creates a new
Instanceobject.
Instance properties
exports-
Returns an object containing as its members all the functions exported from the WebAssembly module instance, to allow them to be accessed and used by JavaScript. Read-only.
Examples
>Synchronously instantiating a WebAssembly module
The WebAssembly.Instance() constructor function can be called to synchronously instantiate a given WebAssembly.Module object, for example:
const importObject = {
my_namespace: {
imported_func(arg) {
console.log(arg);
},
},
};
fetch("http://developer.mozilla.org/simple.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => {
const mod = new WebAssembly.Module(bytes);
const instance = new WebAssembly.Instance(mod, importObject);
instance.exports.exported_func();
});
The preferred way to get an Instance is asynchronously, for example using the WebAssembly.instantiateStreaming() function like this:
const importObject = {
my_namespace: {
imported_func(arg) {
console.log(arg);
},
},
};
WebAssembly.instantiateStreaming(fetch("http://developer.mozilla.org/simple.wasm"), importObject).then(
(obj) => obj.instance.exports.exported_func(),
);
This also demonstrates how the exports property is used to access exported functions.
Specifications
| Specification |
|---|
| WebAssembly JavaScript Interface> # instances> |
Browser compatibility
Loading…