WebAssembly.Module.customSections()

**WebAssembly.Module.customSections()** 靜態方法返回給定模組中所有具有給定字串名稱的自定義節的內容的副本。

語法

js
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,例如

bash
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 原始碼即時示例

js
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 的瀏覽器中載入。

另請參閱