Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
WebAssembly.Global
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis mars 2020.
Un objetWebAssembly.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.
Dans cet article
Constructeur
WebAssembly.Global()Crée un nouvel objet
Global.
InstancesGlobal
Toutes les instances deGlobal héritent du prototype du constructeurGlobal(), ce dernier peut être modifié afin de modifier le comportement de l'ensemble des instancesGlobal.
Propriétés des instances
Global.prototype.constructorRenvoie la fonction qui a créé cette instance d'objet. Par défaut, c'est le constructeur
WebAssembly.Global().Global.prototype[@@toStringTag]La valeur initiale de la propriété
@@toStringTagest la chaîne de caractères"WebAssembly.Global".Global.prototype.valueLa valeur contenue au sein de la variable globale. Elle peut être utilisée pour récupérer ou modifier la valeur de la variable globale.
Méthodes des instances
Global.prototype.valueOf()Une méthode ancienne qui renvoie la valeur contenue au sein de la variable globale.
Exemples
>Créer une nouvelle instanceGlobal
Dans l'exemple suivant, on montre comment créer une nouvelle instance globale grâce au constructeurWebAssembly.Global(). Cette instance globale est définie avec le typei32 et est indiquée comme modifiable. Sa valeur initiale est0.
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 fonctionincGlobal() qui a été exportée depuis le moduleglobal.wasm (cette fonction ajoute1 à n'imorte quelle valeur puis renvoie cette nouvelle valeur).
const output = document.getElementById("output");function assertEq(msg, res, attendu) { output.innerHTML += `Test ${msg} : `; if (res !== attendu) output.innerHTML += `ÉCHEC !<br>Résultat : ${res}<br>Attendu : ${attendu}<br>`; else output.innerHTML += `SUCCÈS ! Résultat : ${res}<br>`;}assertEq( "Existence de WebAssembly.Global", typeof WebAssembly.Global, "function",);const global = new WebAssembly.Global({ value: "i32", mutable: true }, 0);WebAssembly.instantiateStreaming(fetch("global.wasm"), { js: { global } }).then( ({ instance }) => { assertEq( "Obtention de la valeur initiale depuis wasm", instance.exports.getGlobal(), 0, ); global.value = 42; assertEq( "Obtention de la valeur mise à jour en JS depuis wasm", instance.exports.getGlobal(), 42, ); instance.exports.incGlobal(); assertEq( "Obtention de la valeur mise à jour côté wasm en JS", global.value, 43, ); },);Note :Cet exemple estutilisable sur GitHub etson code source est également disponible.
Spécifications
| Specification |
|---|
| WebAssembly JavaScript Interface> # globals> |