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 October 2017.

WebAssembly.Global 객체는 전역 변수 인스턴스를 나타내며 JavaScript 및 하나 이상의 WebAssembly.Module 인스턴스에서 가져오거나 내보낼 수 있습니다. 이렇게 하면 여러 모듈을 동적으로 연결할 수 있습니다.

생성자

WebAssembly.Global()

새로운 Global 객체를 생성합니다.

전역 인스턴스

모든 Global 인스턴스는 Global() 생성자의 프로토타입 객체에서 상속합니다. 모든 Global 인스턴스에 영향을 미치도록 수정할 수 있습니다.

인스턴스 속성

Global.prototype.constructor

이 객체의 인스턴스를 생성한 함수를 반환합니다. 기본적으로 이것은 WebAssembly.Global() 생성자입니다.

Global.prototype[@@toStringTag]

@@toStringTag 프로퍼티의 초기값은 문자열 값 "WebAssembly.Global" 입니다.

Global.prototype.value

전역 변수 내부에 포함된 값 - 전역 값을 직접 설정하고 가져오는 데 사용할 수 있습니다.

인스턴스 메서드

Global.prototype.valueOf()

전역 변수 내부에 포함된 값을 반환하는 구식 메소드입니다.

Examples

다음 예제에서는 WebAssembly.Global() 생성자를 사용하여 만드는 새 전역 인스턴스를 보여줍니다. 값이 0 인 변경 가능한 i32 유형으로 정의됩니다.

먼저 Global.value 속성을 사용하여 '42'로 전역 값이 변경되고, global.wasm 모듈에서 내보낸 incGlobal() 함수를 사용하여 43으로 변경됩니다. (이 함수는 주어진 값에 1을 더한 다음 새 값을 반환합니다).

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

Note: GitHub에서 실행 중인 예제(running live on GitHub)를 볼 수 있습니다. source code도 참조하십시오.

명세서

Specification
WebAssembly JavaScript Interface
# globals

브라우저 호환성

BCD tables only load in the browser

See also