WebAssembly.Instance
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
Instance
object.
Instance properties
Instance.prototype.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 = {
imports: {
imported_func: function(arg) {
console.log(arg);
}
}
};
fetch('simple.wasm').then(response =>
response.arrayBuffer()
).then(bytes => {
let mod = new WebAssembly.Module(bytes);
let 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 = {
imports: {
imported_func: function(arg) {
console.log(arg);
}
}
};
WebAssembly.instantiateStreaming(fetch('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
BCD tables only load in the browser