語法
js
set(index, value)
引數
index-
要更改的函式引用的索引。
value-
要將引用更改為的值。它必須是表的元素型別的值。根據型別,它可以是匯出的 WebAssembly 函式、底層 Wasm 函式的 JavaScript 包裝器或主機引用。
返回值
無(undefined)。
異常
- 如果
index大於或等於Table.prototype.length,則會丟擲RangeError。 - 如果
value的型別不是表的元素型別,則會丟擲TypeError。
示例
使用 Table.set
下面的示例(請參閱 table2.html 的原始碼和即時版本)建立了一個新的 WebAssembly Table 例項,其初始大小為兩個引用。然後,我們打印表的長度以及兩個索引的內容(透過 Table.prototype.get() 檢索),以顯示長度為 2,並且索引當前不包含任何函式引用(它們當前返回 )。null
js
const tbl = new WebAssembly.Table({ initial: 2, element: "anyfunc" });
console.log(tbl.length);
console.log(tbl.get(0));
console.log(tbl.get(1));
然後,我們建立一個包含對錶的引用的匯入物件
js
const importObj = {
js: { tbl },
};
最後,我們使用 WebAssembly.instantiateStreaming() 載入並例項化一個 Wasm 模組 (table2.wasm),打印表長度,並呼叫現在儲存在表中的兩個引用函式。table2.wasm 模組將兩個函式引用新增到表中,這兩個函式都會列印一個簡單值(請參閱文字表示)。
js
WebAssembly.instantiateStreaming(fetch("table2.wasm"), importObject).then(
(obj) => {
console.log(tbl.length);
console.log(tbl.get(0)());
console.log(tbl.get(1)());
},
);
注意,您需要在訪問器末尾包含第二個函式呼叫運算子才能實際呼叫引用的函式並記錄其中儲存的值(例如,get(0)() 而不是 get(0))。
此示例表明,我們正在從 JavaScript 建立和訪問表,但同一個表在 Wasm 例項內部也是可見的並且可以呼叫。
規範
| 規範 |
|---|
| WebAssembly JavaScript 介面 # dom-table-set |
瀏覽器相容性
載入中…