From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../global_objects/webassembly/index.html | 106 +++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 files/zh-cn/web/javascript/reference/global_objects/webassembly/index.html (limited to 'files/zh-cn/web/javascript/reference/global_objects/webassembly/index.html') diff --git a/files/zh-cn/web/javascript/reference/global_objects/webassembly/index.html b/files/zh-cn/web/javascript/reference/global_objects/webassembly/index.html new file mode 100644 index 0000000000..66f14793af --- /dev/null +++ b/files/zh-cn/web/javascript/reference/global_objects/webassembly/index.html @@ -0,0 +1,106 @@ +--- +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实例的成员可以被随后访问到,可以调用实例中被导出的方法。

+ +

规范

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

浏览器兼容性

+ +
+ + +

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

+ +

参见

+ + +
-- cgit v1.2.3-54-g00ecf