A
WebAssembly.Global
object represents a global variable instance, accessible from both JavaScript and importable/exportable across one or more
WebAssembly.Module
instances. This allows dynamic linking of multiple modules.
WebAssembly.Global()
Global
对象。
所有
Global
instances inherit from the
Global()
constructor's prototype object — this can be modified to affect all
Global
实例。
Global.prototype.constructor
WebAssembly.Global()
构造函数。
Global.prototype[@@toStringTag]
Global.prototype.value
The value contained inside the global variable — this can be used to directly set and get the global's value.
Global.prototype.valueOf()
Old-style method that returns the value contained inside the global variable.
The following example shows a new global instance being created using the
WebAssembly.Global()
constructor. It is being defined as a mutable
i32
type, with a value of 0.
The value of the global is then changed, first to
42
使用
Global.value
property, and then to 43 using the
incGlobal()
function exported out of the
global.wasm
module (this adds 1 to whatever value is given to it and then returns the new value).
const output = document.getElementById('output');
function assertEq(msg, got, expected) {
output.innerHTML += `Testing ${msg}: `;
if (got !== expected)
output.innerHTML += `FAIL!<br>Got: ${got}<br>Expected: ${expected}<br>`;
else
output.innerHTML += `SUCCESS! Got: ${got}<br>`;
}
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);
});
注意 : You can see the example running live on GitHub ; see also the source code .
| 规范 |
|---|
|
WebAssembly JavaScript 接口
The definition of 'WebAssembly.Global()' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Global
|
Chrome 69 | Edge No | Firefox 62 | IE No | Opera No | Safari No | WebView Android 69 | Chrome Android 69 | Firefox Android 62 | Opera Android No | Safari iOS No | Samsung Internet Android 10.0 | nodejs No |
Global()
构造函数
|
Chrome 69 | Edge No | Firefox 62 | IE No | Opera No | Safari No | WebView Android 69 | Chrome Android 69 | Firefox Android 62 | Opera Android No | Safari iOS No | Samsung Internet Android 10.0 | nodejs No |
value
|
Chrome 69 | Edge No | Firefox 62 | IE No | Opera No | Safari No | WebView Android 69 | Chrome Android 69 | Firefox Android 62 | Opera Android No | Safari iOS No | Samsung Internet Android 10.0 | nodejs No |
valueOf
|
Chrome 69 | Edge No | Firefox 62 | IE No | Opera No | Safari No | WebView Android 69 | Chrome Android 69 | Firefox Android 62 | Opera Android No | Safari iOS No | Samsung Internet Android 10.0 | nodejs No |
完整支持
不支持
WebAssembly
WebAssembly.Module
WebAssembly.Global
WebAssembly.Instance
WebAssembly.Memory
WebAssembly.Table
WebAssembly.CompileError
WebAssembly.LinkError
WebAssembly.RuntimeError
Object
Object.prototype.__defineGetter__()
Object.prototype.__defineSetter__()
Object.prototype.__lookupGetter__()
Object.prototype.__lookupSetter__()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.propertyIsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toSource()
Object.prototype.toString()
Object.prototype.valueOf()
Object.setPrototypeOf()