El objeto WebAssembly
de JavaScript actua como un namespace para todas las funcionalidades realcionados con WebAssembly.
A diferencia de otros objetos globales, WebAssembly
no tiene un constructor (no tiene una funci贸n para crear el objeto). Puedes ser comparado con el objeto Math
, que tambi茅n es un namespace, para funciones y constantes matem谩ticas, o tambi茅n con Intl
que es un namespace para internacionalizaci贸n y otras funciones de idioma.
Descripci贸n
Los usos primarios para el objeto WebAssembly
son:
- Cargar c贸digo WebAssembly, utilizando la funci贸n
WebAssembly.instantiate()
. - Crear nuevas instancias de memoria y de tablas mediante los constructores
WebAssembly.Memory()
/WebAssembly.Table()
. - Facilitar el manejo de errores que ocurren dentro de un WebAssembly mediante los constructores:
WebAssembly.CompileError()
/WebAssembly.LinkError()
/WebAssembly.RuntimeError()
.
M茅todos
WebAssembly.instantiate()
- El API primaria para compilar e instanciar c贸digo WebAssembly, ambos regresan un
Module
y el primeroInstance
. WebAssembly.instantiateStreaming()
- Compila e instancia un m贸dulo WebAssembly directamente desde un flujo de origen subyacente, ambos regresan un
Module
y el primeroInstance
. WebAssembly.compile()
- Compila un
WebAssembly.Module
desde el c贸digo binario de un WebAssembly, manteniendo la creaci贸n de la instancia como un objeto separado. WebAssembly.compileStreaming()
- compila un
WebAssembly.Module
directamente desde un flujo de origen subyacente, manteniendo la creaci贸n de la instancia como un objeto sepraado. WebAssembly.validate()
- Valida un arreglo con tipo de c贸digo binario de un WebAssembly, regresando si los bytes son c贸digo v谩lido WebAssembly (
true
) o de lo contrario (false
).
Constructores
WebAssembly.Module()
- Crea un nuevo objeto WebAssembly
Module
. WebAssembly.Instance()
- Crear un nuevo objeto WebAssembly
Instance
. WebAssembly.Memory()
- Crear un nuevo objeto WebAssembly
Memory
. WebAssembly.Table()
- Crear un nuevo objeto WebAssembly
Table
. WebAssembly.CompileError()
- Crear un nuevo objeto WebAssembly
CompileError
. WebAssembly.LinkError()
- Crear un nuevo objeto WebAssembly
LinkError
. WebAssembly.RuntimeError()
- Crear un nuevo objeto WebAssembly
RuntimeError
.
Ejemplos
Despu茅s de obtener alg煤n bytecode de WebAssembly usando la sentencia fetch, nosotros compilamos e instanciamos el m贸dulo usando la funci贸n WebAssembly.instantiate()
, importando una funci贸n de JavaScript en el WebAssembly Module en el proceso. Esta premisa resuelve a un objeto (result
) que contenga un objeto Module
compilado y un objeto Instance
. Entonces tenemos una llamada a Exported WebAssembly function que es exportada por Instance
.
var importObject = {
imports: {
imported_func: function(arg) {
console.log(arg);
}
}
};
fetch('simple.wasm').then(response =>
response.arrayBuffer()
).then(bytes =>
WebAssembly.instantiate(bytes, importObject)
).then(result =>
result.instance.exports.exported_func()
);
Nota: Ver index.html en GitHub (view it live also) para un ejemplo que hace uso de la funci贸n fetchAndInstantiate()
.
Especificaciones
Especificaci贸n | Estado | Comentario |
---|---|---|
WebAssembly JavaScript Interface La definici贸n de 'WebAssembly' en esta especificaci贸n. |
Working Draft | Definici贸n inicial del borrador. |
Compatibilidad de Navegadores
BCD tables only load in the browser