WebAssembly.Global
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2020å¹´3æâ©.
WebAssembly.Global ã¯ã°ãã¼ãã«å¤æ°ã®ã¤ã³ã¹ã¿ã³ã¹ã表ãã¾ããJavaScript ããã¢ã¯ã»ã¹ã§ãã1 ã¤ä»¥ä¸ã® WebAssembly.Module ã¤ã³ã¹ã¿ã³ã¹éã§ã¤ã³ãã¼ã/ã¨ã¯ã¹ãã¼ããããã¨ãã§ãã¾ããããã«ããè¤æ°ã®ã¢ã¸ã¥ã¼ã«ãåçã«ãªã³ã¯ãããã¨ãã§ãã¾ãã
ã³ã³ã¹ãã©ã¯ã¿ã¼
WebAssembly.Global()-
æ°ãã
Globalãªãã¸ã§ã¯ããçæãã¾ãã
Global ã®ã¤ã³ã¹ã¿ã³ã¹
ãã¹ã¦ã® Global ã®ã¤ã³ã¹ã¿ã³ã¹ã¯ Global() ã³ã³ã¹ãã©ã¯ã¿ã¼ã®ããããã£ãªãã¸ã§ã¯ããç¶æ¿ãã¾ããããã«ãããã¹ã¦ã® Global ã¤ã³ã¹ã¿ã³ã¹ã夿´ãããã¨ãã§ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ããããã£
Global.prototype.constructor-
ãã®ãªãã¸ã§ã¯ãã®ã¤ã³ã¹ã¿ã³ã¹ãçæãã颿°ãè¿ãã¾ããæ¢å®ã§ã¯ãããã¯
WebAssembly.Global()ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã Global.prototype[Symbol.toStringTag]-
Symbol.toStringTag ããããã£ã®åæå¤ã§ãæååå¤ "WebAssembly.Global" ã§ãã
Global.prototype.value-
ã°ãã¼ãã«å¤æ°ã®ä¸ã«å«ã¾ãã¦ããå¤ã§ããããã«ãããã°ãã¼ãã«å¤ãç´æ¥è¨å®ããã³åå¾ãããã¨ãã§ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
Global.prototype.valueOf()-
ã°ãã¼ãã«å¤æ°ã®ä¸ã«å«ã¾ãã¦ããå¤ãè¿ãå¤ãå½¢ã®ã¡ã½ããã§ãã
ä¾
>æ°ãã Global ã¤ã³ã¹ã¿ã³ã¹ã®çæ
以ä¸ã®ä¾ã§ã¯æ°ããã°ãã¼ãã«ã¤ã³ã¹ã¿ã³ã¹ã¯ WebAssembly.Global() ã³ã³ã¹ãã©ã¯ã¿ã¼ãç¨ãã¦åæåãããåæå¤ 0 ã®å¤æ´å¯è½ãª i32 åã¨ãã¦å®ç¾©ããã¾ãã
ãã®å¾ãã®å¤ã¯ãGlobal.value ããããã£ã使ããã¨ã«ãã£ã¦ 42 ã«ãglobal.wasm ã¢ã¸ã¥ã¼ã«ããå
¬éãããï¼ã©ããªå¤ãä¸ãããã¦ã 1 ãå ç®ãã¦ãæ°ããå¤ãè¿ãï¼incGlobal() 颿°ã使ããã¨ã«ãã£ã¦ 43 ã«ãªãã¾ãã
const output = document.getElementById("output");
function assertEq(msg, got, expected) {
const result =
got === expected
? `SUCCESS! Got: ${got}<br>`
: `FAIL!<br>Got: ${got}<br>Expected: ${expected}<br>`;
output.innerHTML += `Testing ${msg}: ${result}`;
}
assertEq("WebAssembly.Global exists", typeof WebAssembly.Global, "function");
const global = new WebAssembly.Global({ value: "i32", mutable: true }, 0);
WebAssembly.instantiateStreaming(fetch("global.wasm"), { js: { global } }).then(
({ instance }) => {
assertEq(
"getting initial value from wasm",
instance.exports.getGlobal(),
0,
);
global.value = 42;
assertEq(
"getting JS-updated value from wasm",
instance.exports.getGlobal(),
42,
);
instance.exports.incGlobal();
assertEq("getting wasm-updated value from JS", global.value, 43);
},
);
ã¡ã¢: ãã®ä¾ã¯GitHub ä¸ã®å®è¡ä¾ã§ç¢ºèªã§ãã¾ããã¾ããã½ã¼ã¹ã³ã¼ããåç §ãã¦ãã ããã
仿§æ¸
| Specification |
|---|
| WebAssembly JavaScript Interface > # globals > |