This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

WebAssembly 자바스크립트 객체는 모든 WebAssembly에 관계된 기능의 네임스페이스로서 역할합니다.

대부분의 전역객체와 다르게, WebAssembly는 생성자가 아닙니다 (함수 객체가 아닙니다). 비슷한 예로 수학적인 상수나 함수들을 담고있는 Math 객체나, 국제화 관련 생성자나 언어에 민감한 다른 함수들을 담고있는 Intl 등이 있습니다.

설명

WebAssembly 객체의 기본적인 사용례는 다음과 같습니다:

메서드

WebAssembly.instantiate()
WebAssembly 코드를 컴파일하고 인스턴스화하여 Module과 첫 번째 Instance를 반환하는 기본 API입니다.
WebAssembly.instantiateStreaming()
스트리밍 된 원본 소스에서 직접 WebAssembly 모듈을 컴파일하고 인스턴스화하여 Module과 첫 번째 Instance를 반환합니다.
WebAssembly.compile()
WebAssembly 바이너리 코드에서 WebAssembly.Module을 컴파일하여 인스턴스화를 별도의 단계로 남겨 둡니다.
WebAssembly.compileStreaming()
WebAssembly.Module을 스트림 된 원본 소스에서 직접 컴파일하여 인스턴스화를 별도의 단계로 남겨 둡니다.
WebAssembly.validate()
바이트가 유효한 WebAssembly 코드 (true)인지 아닌지 (false)를 반환하여 WebAssembly 바이너리 코드의 지정된 입력 된 배열을 확인합니다.

생성자

WebAssembly.Global()
Creates a new WebAssembly Global object.
WebAssembly.Module()
Creates a new WebAssembly Module object.
WebAssembly.Instance()
Creates a new WebAssembly Instance object.
WebAssembly.Memory()
Creates a new WebAssembly Memory object.
WebAssembly.Table()
Creates a new WebAssembly Table object.
WebAssembly.CompileError()
Creates a new WebAssembly CompileError object.
WebAssembly.LinkError()
Creates a new WebAssembly LinkError object.
WebAssembly.RuntimeError()
Creates a new WebAssembly RuntimeError object.

예제

다음 예제 (GitHub의 instantiate-streaming.html 데모보기 및 라이브보기)에서는 기본 소스에서 .wasm 모듈을 직접 스트리밍 한 다음 컴파일하고 인스턴스화합니다. 프로미스는 ResultObject로 충족됩니다. instantiateStreaming() 함수는 Response 객체에 대한 promise를 받아들이므로 직접 WindowOrWorkerGlobalScope.fetch() 호출에 전달할 수 있습니다.

var importObject = { imports: { imported_func: arg => console.log(arg) } };

WebAssembly.instantiateStreaming(fetch('simple.wasm'), importObject)
.then(obj => obj.instance.exports.exported_func());

그런 다음 ResultObject의 인스턴스 구성에 액세스하고 그 안에 있는 exported_func을 호출합니다.

스펙

스펙 상태 설명
WebAssembly JavaScript Interface
The definition of 'WebAssembly' in that specification.
Working Draft 초안 정의

브라우저 호환성

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support5716522 No4411
CompileError5716522 No4411
Global No No62 No No No
Instance5716522 No4411
LinkError5716522 No4411
Memory5716522 No4411
Module5716522 No4411
RuntimeError5716522 No4411
Table5716522 No4411
compile5716522 No4411
compileStreaming611658 No47 No
instantiate5716522 No4411
instantiateStreaming611658 No47 No
validate5716522 No4411
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support5757 Yes1522 ?117.0
CompileError5757 Yes1522 ?117.0
Global No No No62 No No No
Instance5757 Yes1522 ?117.0
LinkError5757 Yes1522 ?117.0
Memory5757 Yes1522 ?117.0
Module5757 Yes1522 ?117.0
RuntimeError5757 Yes1522 ?117.0
Table5757 Yes1522 ?117.0
compile5757 Yes152244117.0
compileStreaming6161 No58 ? No No
instantiate5757 Yes1522 ?117.0
instantiateStreaming6161 No58 ? No No
validate5757 Yes1522 ?117.0

1. This feature is behind the Experimental JavaScript Features preference.

2. Disabled in the Firefox 52 Extended Support Release (ESR).

 

바깥 고리

문서 태그 및 공헌자

이 페이지의 공헌자: limkukhyun, 0xABCDEF
최종 변경자: limkukhyun,