首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WebAssembly.table.set

这是一项 实验技术

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

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

语法

代码语言:javascript
复制
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)。

代码语言:javascript
复制
var tbl = new WebAssembly.Table({initial:2, element:"anyfunc"});
console.log(tbl.length);
console.log(tbl.get(0));
console.log(tbl.get(1));

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

代码语言:javascript
复制
var importObj = {
  js: {
    tbl:tbl
  }
};

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

代码语言:javascript
复制
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实例中也是可见的和可调用的。

规范

Specification

Status

Comment

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

Draft

Initial draft definition.

浏览器兼容性

Feature

Chrome

Edge

Firefox

Internet Explorer

Opera

Safari

Basic Support

57

16

522

No

44

11

Feature

Android

Chrome for Android

Edge mobile

Firefox for Android

IE mobile

Opera Android

iOS Safari

Basic Support

57

57

(Yes)1

522

No

?

11

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com