WebAssembly.Table
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2017å¹´10æâ©.
WebAssembly.Table æ¯ä»£è¡¨ WebAssembly Table ç JavaScript å
è£
对象ï¼å
·æç±»æ°ç»ç»æï¼åå¨äºå¤ä¸ªå½æ°å¼ç¨ãå¨ JavaScript æè
WebAssemble ä¸å建ç Table 对象å¯ä»¥åæ¶è¢« JavaScript æ WebAssembly 访é®åæ´æ¹ã
夿³¨ï¼Table 对象ç®ååªè½åå¨å½æ°å¼ç¨ï¼ä¸è¿å¨å°æ¥å¯è½ä¼è¢«æ©å±ã
æé 彿°
WebAssembly.Table()-
å建ä¸ä¸ªæ°ç
Table对象ã
å®ä¾å±æ§
Table.prototype.lengthåªè¯»-
è¿å Table çé¿åº¦ï¼å³å ç´ æ°ã
å®ä¾æ¹æ³
Table.prototype.get()-
访é®å¨å½æ°ââè·åç»å®ç´¢å¼ä¸åå¨çå ç´ ã
Table.prototype.grow()-
å° Table å®ä¾ç大å°å¢å æå®æ°éçå ç´ ã
Table.prototype.set()-
å°åå¨å¨ç»å®ç´¢å¼ä¸çå ç´ è®¾ç½®ä¸ºç»å®å¼ã
示ä¾
>å建ä¸ä¸ªæ°ç WebAssembly Table å®ä¾
ä¸é¢ç示ä¾ï¼è§ table2.html æºä»£ç å宿¶çæ¬ï¼å建äºä¸ä¸ªæ°ç WebAssembly Table å®ä¾ï¼åå§å¤§å°ä¸º 2 个å
ç´ ãç¶åï¼æä»¬æå°åºè¡¨çé¿åº¦å两个索å¼çå
容ï¼éè¿ Table.prototype.get() æ£ç´¢ï¼ï¼ä»¥æ¾ç¤ºé¿åº¦ä¸º 2ï¼ä¸ä¸¤ä¸ªå
ç´ å为 nullã
const tbl = new WebAssembly.Table({ initial: 2, element: "anyfunc" });
console.log(tbl.length); // "2"
console.log(tbl.get(0)); // "null"
console.log(tbl.get(1)); // "null"
ç¶åï¼æä»¬å建ä¸ä¸ªå å« Table çå¯¼å ¥å¯¹è±¡ï¼
const importObj = {
js: { tbl },
};
æåï¼æä»¬ä½¿ç¨ WebAssembly.instantiateStreaming() æ¹æ³å 载并å®ä¾åä¸ä¸ª Wasm 模åï¼table2.wasmï¼ãtable2.wasm 模åå
å«ä¸¤ä¸ªå½æ°ï¼ä¸ä¸ªè¿å 42ï¼å¦ä¸ä¸ªè¿å 83ï¼ï¼å¹¶å°è¿ä¸¤ä¸ªå½æ°åå«åå¨å°å¯¼å
¥ Table ç 0 å·å 1 å·å
ç´ ä¸ï¼åè§ææ¬è¡¨ç¤ºï¼ãå æ¤ï¼å¨å®ä¾åä¹åï¼è¡¨çé¿åº¦ä»ç¶æ¯ 2ï¼ä½å
ç´ ä¸ç°å¨å
å«äºå¯è°ç¨ç WebAssembly 导åºå½æ°ï¼å¯ä»¥éè¿ 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 åå»ºå¹¶è®¿é® Tableï¼ä½å¨ Wasm å®ä¾ä¸ï¼åæ ·ç Table 乿¯å¯è§å¹¶å¯è°ç¨çã
è§è
| Specification |
|---|
| WebAssembly JavaScript Interface > # tables > |