Un objet WebAssembly.Global représente une instance d'une variable globale, accessible depuis le code JavaScript et importable/exportable pour un ou plusieurs modules WebAssembly (WebAssembly.Module). Cela permet de lier dynamiquement plusieurs modules.

Syntaxe

var maGlobale = new WebAssembly.Global(descripteur, valeur);

Paramètres

descripteur
Un dictionnaire GlobalDescriptor qui contient deux propriétés :
  • value : une valeur USVString qui représente le type de donnée de la variable globale. Ce type peut être i32, i64, f32 ou f64.
  • mutable : un booléen qui indique si la variable globale peut être modifiée ou non. Par défaut, cette propriété vaut false.
valeur
La valeur que la variable doit contenir. Ce peut être n'importe quelle valeur qui respecte le type de donnée de la variable.

Propriétés

Aucune.

Instances de WebAssembly.Global

Toutes les instances de Global héritent du prototype du constructeur Global(). Ce prototype peut être modifié afin d'avoir un impact sur l'ensemble des instances de Global.

Propriétés des instances

Global.prototype.constructor
Cette propriété renvoie la fonction qui a créé l'instance de l'objet. Par défaut, c'est le constructeur WebAssembly.Global().
Global.prototype[@@toStringTag]
La valeur initiale de la propriété @@toStringTag est la chaîne de caractères "WebAssembly.Global".
Global.prototype.value
La valeur contenue à l'intérieur de la variable globale. Cette propriété peut être utilisée afin de modifier et d'accéder à la valeur globale.

Méthodes des instances

Global.prototype.valueOf()
Une méthode qui renvoie la valeur contenue dans la variable globale.

Exemples

Dans l'exemple suivant, on montre comment créer une nouvelle instance globale grâce au constructeur WebAssembly.Global(). Cette instance globale est définie avec le type i32 et est indiquée comme modifiable. Sa valeur initiale est 0.

On change ensuite la valeur de la variable globale en la passant à 42 grâce à la propriété Global.value puis en la passant à 43 grâce à la fonction incGlobal() qui a été exportée depuis le module global.wasm (cette fonction ajoute 1 à n'imorte quelle valeur puis renvoie cette nouvelle valeur).

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);
});

Spécifications

Spécification État Commentaires
WebAssembly JavaScript Interface
La définition de 'WebAssembly.Global()' dans cette spécification.
Version de travail Brouillon de spécification initiale.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet 69Edge Aucun support NonFirefox Support complet 62IE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Support complet 69Chrome Android Support complet 69Edge Mobile Aucun support NonFirefox Android Support complet 62Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non
valueChrome Support complet 69Edge Aucun support NonFirefox Support complet 62IE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Support complet 69Chrome Android Support complet 69Edge Mobile Aucun support NonFirefox Android Support complet 62Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non
valueOfChrome Support complet 69Edge Aucun support NonFirefox Support complet 62IE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Support complet 69Chrome Android Support complet 69Edge Mobile Aucun support NonFirefox Android Support complet 62Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non

Légende

Support complet  
Support complet
Aucun support  
Aucun support

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, sideshowbarker
Dernière mise à jour par : SphinxKnight,