[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/WebAssembly/Reference/JavaScript_interface/Global [Back]  [Original]

WebAssembly.Global - WebAssembly | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

WebAssembly.Global

Baseline Large disponibilit

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 objet WebAssembly.Global reprsente 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()

Cre un nouvel objet Global.

Instances Global

Toutes les instances de Global hritent du prototype du constructeur Global(), ce dernier peut tre modifi afin de modifier le comportement de l'ensemble des instances Global.

Proprits des instances

Global.prototype.constructor

Renvoie la fonction qui a cr cette instance d'objet. Par dfaut, c'est le constructeur WebAssembly.Global().

Global.prototype[@@toStringTag]

La valeur initiale de la proprit @@toStringTag est la chane de caractres "WebAssembly.Global".

Global.prototype.value

La valeur contenue au sein de la variable globale. Elle peut tre utilise pour rcuprer ou modifier la valeur de la variable globale.

Mthodes des instances

Global.prototype.valueOf()

Une mthode ancienne qui renvoie la valeur contenue au sein de la variable globale.

Exemples

Crer une nouvelle instance Global

Dans l'exemple suivant, on montre comment crer une nouvelle instance globale grce au constructeur WebAssembly.Global(). Cette instance globale est dfinie avec le type i32 et est indique comme modifiable. Sa valeur initiale est 0.

On change ensuite la valeur de la variable globale en la passant 42 grce la proprit Global.value puis en la passant 43 grce la fonction incGlobal() qui a t exporte depuis le module global.wasm (cette fonction ajoute 1 n'imorte quelle valeur puis renvoie cette nouvelle valeur).

js
const output = document.getElementById("output");

function assertEq(msg, res, attendu) {
  output.innerHTML += `Test ${msg} : `;
  if (res !== attendu)
    output.innerHTML += `CHEC !<br>Rsultat : ${res}<br>Attendu : ${attendu}<br>`;
  else output.innerHTML += `SUCCS ! Rsultat : ${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 ct wasm en JS",
      global.value,
      43,
    );
  },
);

Spcifications

Spcification
WebAssembly JavaScript Interface
# globals

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page