WebAssembly.Module.customSections()
**WebAssembly.Module.customSections()
** 静态方法返回给定模块中所有具有给定字符串名称的自定义节的内容的副本。
语法
WebAssembly.Module.customSections(module, sectionName)
参数
module
-
正在考虑其自定义节的
WebAssembly.Module
对象。 sectionName
-
所需自定义节的字符串名称。
返回值
一个(可能为空)数组,包含与sectionName
匹配的所有自定义节内容的ArrayBuffer
副本。
异常
如果module
不是WebAssembly.Module
对象实例,则会抛出TypeError
。
描述
Wasm 模块由一系列**节**组成。这些节中的大多数都由 Wasm 规范完全指定和验证,但模块还可以包含在验证期间被忽略和跳过的**自定义节**。(阅读高级结构以获取有关节结构以及如何区分普通节(“已知节”)和自定义节的信息。)
这为开发人员提供了一种方法,可以在 Wasm 模块中包含用于其他目的的自定义数据,例如名称自定义节,它允许开发人员为模块中的所有函数和局部变量提供名称(如原生构建中的“符号”)。
请注意,WebAssembly 文本格式目前没有为添加新的自定义节指定语法;但是,您可以在从文本格式转换为 Wasm 的过程中向 Wasm 添加名称节。wast2wasm
命令作为wabt 工具的一部分可用,它有一个--debug-names
选项 - 在转换期间指定此选项以获取带有名称自定义节的 Wasm,例如
wast2wasm simple-name-section.was -o simple-name-section.wasm --debug-names
示例
使用 customSections
以下示例使用WebAssembly.Module.customSections
检查加载的模块实例是否包含“name”自定义节。如果WebAssembly.Module.customSections
返回长度大于 0 的ArrayBuffer
,则模块包含“name”自定义节。
请参阅 custom-section.html 源代码和实时示例。
WebAssembly.compileStreaming(fetch("simple-name-section.wasm")).then((mod) => {
const nameSections = WebAssembly.Module.customSections(mod, "name");
if (nameSections.length !== 0) {
console.log("Module contains a name section");
console.log(nameSections[0]);
}
});
规范
规范 |
---|
WebAssembly JavaScript 接口 # dom-module-customsections |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。