在线文档教程

WebAssembly.table.set

WebAssembly.table.set

这是一项 实验技术

在使用此产品之前,请仔细检查浏览器兼容性表。

WebAssembly.Table对象的set()原型方法将存储在给定索引处的引用变为不同的值。

语法

table.set(index, value

参数

_index_您想要mutate._value_的函数引用的索引要变更引用的值。这是一个导出的WebAssembly函数,一个底层的wasm函数的JavaScript包装器。

返回值

Void.

异常

  • 如果index大于或等于Table.prototype.lengtha,则抛出RangeError

  • 如果值不是出口WebAssembly功能或者null,则抛出一个TypeError

示例

以下示例(请参阅table2.html 源代码和实时版本)将创建一个新的WebAssembly表实例,其初始大小为2个引用。然后,我们打印出两个索引(通过检索Table.prototype.get())的表长度和内容,以显示长度为2,并且索引当前不包含函数引用(它们当前返回null)。

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

然后我们创建一个包含对表的引用的导入对象:

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

最后,我们使用我们的fetchAndInstantiate()效用函数加载并实例化一个wasm模块(table2.wasm),记录表长度,并调用现在存储在表中的两个引用函数(table2.wasm模块(见文本表示)添加两个函数引用表,这两个都打印出一个简单的值):

fetchAndInstantiate('table2.wasm', importObject).then(function(instance) {   console.log(tbl.length   console.log(tbl.get(0)()   console.log(tbl.get(1)() }

注意如何在访问器的末尾包含第二个函数调用操作符,以实际调用引用的函数并记录其中存储的值(例如,get(0)()而不是get(0))。

这个例子显示了我们正在使用JavaScript创建和访问表,但同样的表在wasm实例中也是可见的和可调用的。

规范

SpecificationStatusComment
Web Assembly JavaScript APIThe definition of 'set()' in that specification.DraftInitial draft definition.

浏览器兼容性

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support5716522No4411

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support5757(Yes)1522No?11