Repository navigation
Expand file tree
/
Copy pathindex.md
More file actions
85 lines (64 loc) · 5.46 KB
/
Copy pathindex.md
File metadata and controls
85 lines (64 loc) · 5.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
---
title: WebAssembly
slug: WebAssembly/Reference/JavaScript_interface
original_slug: WebAssembly/JavaScript_interface
---
{{WebAssemblySidebar}}
El objeto **`WebAssembly`** de JavaScript actua como un namespace para todas las funcionalidades realcionados con [WebAssembly](/es/docs/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 {{jsxref("Math")}}, que también es un namespace, para funciones y constantes matemáticas, o también con {{jsxref("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()`](/es/docs/WebAssembly/Reference/JavaScript_interface/instantiate).
- Crear nuevas instancias de memoria y de tablas mediante los constructores [`WebAssembly.Memory()`](/es/docs/WebAssembly/Reference/JavaScript_interface/Memory)/[`WebAssembly.Table()`](/es/docs/WebAssembly/Reference/JavaScript_interface/Table).
- Facilitar el manejo de errores que ocurren dentro de un WebAssembly mediante los constructores:[`WebAssembly.CompileError()`](/es/docs/WebAssembly/Reference/JavaScript_interface/CompileError)/[`WebAssembly.LinkError()`](/es/docs/WebAssembly/Reference/JavaScript_interface/LinkError)/[`WebAssembly.RuntimeError()`](/es/docs/WebAssembly/Reference/JavaScript_interface/RuntimeError).
## Métodos
- [`WebAssembly.instantiate()`](/es/docs/WebAssembly/Reference/JavaScript_interface/instantiate)
- : El API primaria para compilar e instanciar código WebAssembly, ambos regresan un `Module` y el primero `Instance`.
- [`WebAssembly.instantiateStreaming()`](/es/docs/WebAssembly/Reference/JavaScript_interface/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()`](/es/docs/WebAssembly/Reference/JavaScript_interface/compile)
- : Compila un [`WebAssembly.Module`](/es/docs/WebAssembly/Reference/JavaScript_interface/Module) desde el código binario de un WebAssembly, manteniendo la creación de la instancia como un objeto separado.
- [`WebAssembly.compileStreaming()`](/es/docs/WebAssembly/Reference/JavaScript_interface/compileStreaming)
- : compila un [`WebAssembly.Module`](/es/docs/WebAssembly/Reference/JavaScript_interface/Module) directamente desde un flujo de origen subyacente, manteniendo la creación de la instancia como un objeto sepraado.
- [`WebAssembly.validate()`](/es/docs/WebAssembly/Reference/JavaScript_interface/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()`](/es/docs/WebAssembly/Reference/JavaScript_interface/Module)
- : Crea un nuevo objeto WebAssembly `Module`.
- [`WebAssembly.Instance()`](/es/docs/WebAssembly/Reference/JavaScript_interface/Instance)
- : Crear un nuevo objeto WebAssembly `Instance`.
- [`WebAssembly.Memory()`](/es/docs/WebAssembly/Reference/JavaScript_interface/Memory)
- : Crear un nuevo objeto WebAssembly `Memory`.
- [`WebAssembly.Table()`](/es/docs/WebAssembly/Reference/JavaScript_interface/Table)
- : Crear un nuevo objeto WebAssembly `Table`.
- [`WebAssembly.CompileError()`](/es/docs/WebAssembly/Reference/JavaScript_interface/CompileError)
- : Crear un nuevo objeto WebAssembly `CompileError`.
- [`WebAssembly.LinkError()`](/es/docs/WebAssembly/Reference/JavaScript_interface/LinkError)
- : Crear un nuevo objeto WebAssembly `LinkError`.
- [`WebAssembly.RuntimeError()`](/es/docs/WebAssembly/Reference/JavaScript_interface/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()`](/es/docs/WebAssembly/Reference/JavaScript_interface/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`](/es/docs/WebAssembly/JavaScript_interface/Module) compilado y un objeto [`Instance`](/es/docs/WebAssembly/JavaScript_interface/Instance) . Entonces tenemos una llamada a [Exported WebAssembly function](/es/docs/WebAssembly/Exported_functions) que es exportada por `Instance`.
```js
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());
```
> [!NOTE]
> Ver [index.html](https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/index.html) en GitHub ([view it live also](https://mdn.github.io/webassembly-examples/js-api-examples/)) para un ejemplo que hace uso de la función [`fetchAndInstantiate()`](https://github.com/mdn/webassembly-examples/blob/master/wasm-utils.js#L1).
## Especificaciones
{{Specifications}}
## Compatibilidad con navegadores
{{Compat}}
## Ver también
- [Vista General de WebAssembly](/es/docs/WebAssembly)
- [Conceptos de WebAssembly](/es/docs/WebAssembly/Guides/Concepts)
- [Uso de la API de JavaScript de WebAssembly](/es/docs/WebAssembly/Using_the_JavaScript_API)