Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

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:

Métodos

WebAssembly.instantiate()
El API primaria para compilar e instanciar código WebAssembly, ambos regresan un Module y el primero Instance.
WebAssembly.instantiateStreaming()
Compila e instancia un módulo WebAssembly directamente desde un flujo de origen subyacente, ambos regresan un Module y el primero Instance.
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

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Soporte básico5716522 No4411
CompileError5716522 No4411
Global No No62 No No No
Instance5716522 No4411
LinkError5716522 No4411
Memory5716522 No4411
Module5716522 No4411
RuntimeError5716522 No4411
Table5716522 No4411
compile5716522 No4411
compileStreaming611658 No47 No
instantiate5716522 No4411
instantiateStreaming611658 No47 No
validate5716522 No4411
FeatureAndroid webviewChrome para AndroidEdge mobileFirefox para AndroidOpera AndroidiOS SafariSamsung Internet
Soporte básico5757 Si1522 ?117.0
CompileError5757 Si1522 ?117.0
Global No No No62 No No No
Instance5757 Si1522 ?117.0
LinkError5757 Si1522 ?117.0
Memory5757 Si1522 ?117.0
Module5757 Si1522 ?117.0
RuntimeError5757 Si1522 ?117.0
Table5757 Si1522 ?117.0
compile5757 Si152244117.0
compileStreaming6161 No58 ? No No
instantiate5757 Si1522 ?117.0
instantiateStreaming6161 No58 ? No No
validate5757 Si1522 ?117.0

1. This feature is behind the Experimental JavaScript Features preference.

2. Disabled in the Firefox 52 Extended Support Release (ESR).

Ver también

Etiquetas y colaboradores del documento

Colaboradores en esta página: jvalencia
Última actualización por: jvalencia,