--- title: WebAssembly slug: Web/JavaScript/Reference/Global_Objects/WebAssembly tags: - API - JavaScript - WebAssembly translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly ---
{{JSRef}}

WebAssemblyJavaScript 对象是所有 WebAssembly 相关功能的命名空间。

和大多数全局对象不一样,WebAssembly不是一个构造函数(它不是一个函数对象)。它类似于 {{jsxref("Math")}} 对象或者 {{jsxref("Intl")}} 对象,Math 对象也是一个命名空间对象,用于保存数学常量和函数;Intl则是用于国际化和其他语言相关函数的命名空间对象。

描述

WebAssembly对象主要用于:

方法

{{jsxref("WebAssembly.instantiate()")}}
用于编译和实例化 WebAssembly 代码的主 API,返回一个 Module 和它的第一个Instance实例。
{{jsxref("WebAssembly.instantiateStreaming()")}}
直接从流式底层源编译和实例化WebAssembly模块,同时返回Module及其第一个Instance实例。
{{jsxref("WebAssembly.compile()")}}
把 WebAssembly 二进制代码编译为一个 {{jsxref("WebAssembly.Module")}} ,不进行实例化。
{{jsxref("WebAssembly.compileStreaming()")}}
直接从流式底层源代码编译{{jsxref("WebAssembly.Module")}} ,将实例化作为一个单独的步骤。
{{jsxref("WebAssembly.validate()")}}
校验 WebAssembly 二进制代码的类型数组是否合法,合法则返回 true ,否则返回 false 。

构造器

{{jsxref("WebAssembly.Global()")}}
创建一个新的WebAssembly Global 全局对象.
{{jsxref("WebAssembly.Module()")}}
创建一个新的WebAssembly Module模块对象。
{{jsxref("WebAssembly.Instance()")}}
创建一个新的WebAssembly Instance实例对象。
{{jsxref("WebAssembly.Memory()")}}
创建一个新的WebAssembly Memory内存对象。
{{jsxref("WebAssembly.Table()")}}
创建一个新的WebAssembly Table表格对象。
{{jsxref("WebAssembly.CompileError()")}}
创建一个新的WebAssembly CompileError编译错误对象。
{{jsxref("WebAssembly.LinkError()")}}
创建一个新的WebAssembly LinkError链接错误对象。
{{jsxref("WebAssembly.RuntimeError()")}}
创建一个新的WebAssembly RuntimeError运行时错误对象。

示例

下面的示例(请参见GitHub上的Instantiate-streaming.html演示,并查看在线演示)直接从流式底层源传输.wasm模块,然后对其进行编译和实例化,并通过ResultObject实现promise。 由于instantiateStreaming()函数接受对 {{domxref("Response")}} 对象的promise,因此您可以直接向其传递{{domxref("WindowOrWorkerGlobalScope.fetch()")}}调用,然后它将把返回的response传递给随后的函数。

var importObject = { imports: { imported_func: arg => console.log(arg) } };

WebAssembly.instantiateStreaming(fetch('simple.wasm'), importObject)
.then(obj => obj.instance.exports.exported_func())

返回的ResultObject实例的成员可以被随后访问到,可以调用实例中被导出的方法。

规范

Specification Status Comment
{{SpecName('WebAssembly JS', '#the-webassembly-object', 'WebAssembly')}} {{Spec2('WebAssembly JS')}} 初始草案定义

浏览器兼容性

{{Compat("javascript.builtins.WebAssembly")}}

参见