--- title: WebAssembly slug: Web/JavaScript/Reference/Global_Objects/WebAssembly tags: - API - JavaScript - WebAssembly translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly ---
WebAssembly
JavaScript 对象是所有 WebAssembly 相关功能的命名空间。
和大多数全局对象不一样,WebAssembly
不是一个构造函数(它不是一个函数对象)。它类似于 {{jsxref("Math")}} 对象或者 {{jsxref("Intl")}} 对象,Math 对象也是一个命名空间对象,用于保存数学常量和函数;Intl则是用于国际化和其他语言相关函数的命名空间对象。
WebAssembly
对象主要用于:
Module
和它的第一个Instance
实例。Module
及其第一个Instance
实例。Global
全局对象.Module
模块对象。Instance
实例对象。Memory
内存对象。Table
表格对象。CompileError
编译错误对象。LinkError
链接错误对象。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")}}