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/table/index.html | 130 +++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 files/zh-cn/web/javascript/reference/global_objects/webassembly/table/index.html (limited to 'files/zh-cn/web/javascript/reference/global_objects/webassembly/table/index.html') diff --git a/files/zh-cn/web/javascript/reference/global_objects/webassembly/table/index.html b/files/zh-cn/web/javascript/reference/global_objects/webassembly/table/index.html new file mode 100644 index 0000000000..a3fbc0a4dc --- /dev/null +++ b/files/zh-cn/web/javascript/reference/global_objects/webassembly/table/index.html @@ -0,0 +1,130 @@ +--- +title: WebAssembly.Table() +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table +--- +
{{JSRef}}
+ +

WebAssembly.Table() 构造函数根据给定的大小和元素类型创建一个Table对象。 

+ +

这是一个包装了WebAssemble Table 的Javascript包装对象,具有类数组结构,存储了多个函数引用。在Javascript或者WebAssemble中创建Table 对象可以同时被Javascript或WebAssemble 访问和更改。

+ +
+

Note: Tables 对象目前只能存储函数引用,不过在将来可能会被扩展。

+
+ +

语法

+ +
var myTable = new WebAssembly.Table(tableDescriptor);
+ +

参数

+ +
+
tableDescriptor
+
该对象具有以下属性: +
+
element
+
一个表明储存在该Table中对象的类型。 目前只能是: "anyfunc" (函数)。
+
initial
+
该WebAssembly Table初始大小。
+
maximum {{optional_inline}}
+
该WebAssembly Table允许扩展到的最大大小。
+
+
+
+ +

异常

+ + + +

Table Instance

+ +

所有Table实例都继承自Table()构造函数的原型对象-可以对其进行修改以影响所有Table实例。

+ +

Instance 属性

+ +
+
Table.prototype.constructor
+
返回创建该对象实例的函数。默认情况下,这是{{jsxref("WebAssembly.Table()")}} 的构造函数。
+
{{jsxref("WebAssembly/Table/length","Table.prototype.length")}}
+
返回Table的长度,即元素数。
+
+ +

Instance methods

+ +
+
{{jsxref("WebAssembly/Table/get","Table.prototype.get()")}}
+
Accessor function — gets the element stored at a given index.
+
{{jsxref("WebAssembly/Table/grow","Table.prototype.grow()")}}
+
Increases the size of the Table instance by a specified number of elements.
+
{{jsxref("WebAssembly/Table/set","Table.prototype.set()")}}
+
Sets an element stored at a given index to a given value.
+
+ +

例子

+ +

The following example (see table2.html source code and live version) creates a new WebAssembly Table instance with an initial size of 2 elements. We then print out the table length and contents of the two indexes (retrieved via {{jsxref("WebAssembly/Table/get", "Table.prototype.get()")}} to show that the length is two and both elements are {{jsxref("null")}}.

+ +
var tbl = new WebAssembly.Table({initial:2, element:"anyfunc"});
+console.log(tbl.length);  // "2"
+console.log(tbl.get(0));  // "null"
+console.log(tbl.get(1));  // "null"
+ +

We then create an import object that contains the table:

+ +
var importObj = {
+  js: {
+    tbl:tbl
+  }
+};
+ +

Finally, we load and instantiate a wasm module (table2.wasm) using the {{jsxref("WebAssembly.instantiateStreaming()")}} method.  The table2.wasm module contains two functions (one that returns 42 and another that returns 83) and stores both into elements 0 and 1 of the imported table (see text representation).  So after instantiation, the table still has length 2, but the elements now contain callable Exported WebAssembly Functions which we can call from JS.

+ +
WebAssembly.instantiateStreaming(fetch('table2.wasm'), importObject)
+.then(function(obj) {
+  console.log(tbl.length);
+  console.log(tbl.get(0)());
+  console.log(tbl.get(1)());
+});
+ +

Note how you've got to include a second function invocation operator at the end of the accessor to actually invoke the referenced function and log the value stored inside it (e.g. get(0)() rather than get(0)) .

+ +

This example shows that we're creating and accessing the table from JavaScript, but the same table is visible and callable inside the wasm instance too.

+ +

规范

+ + + + + + + + + + + + + + + + +
规范StatusComment
{{SpecName('WebAssembly JS', '#webassemblytable-objects', 'Table')}}{{Spec2('WebAssembly JS')}}Initial draft definition.
+ +

浏览器兼容性

+ +
+ + +

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

+
+ +

相关链接

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