--- title: WebAssembly slug: Web/JavaScript/Reference/Global_Objects/WebAssembly translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly ---
Объект JavaScript WebAssembly
действует как пространство имён для всего WebAssembly-связанного функционала.
В отличие от большинства других глобальных объектов, WebAssembly
не является конструктором (это не объект функции). Можно сравнить его с {{jsxref("Math")}}, который так же является пространством имён констант и функций, или {{jsxref("Intl")}}, который является пространством имён для конструкторов интернационализации и других языково-чувствительных функций.
Основное использование WebAssembly
следующее:
Module
и его первый Instance
.true
) или (false
).Module
.Instance
.Memory
.Table
.CompileError
.LinkError
.RuntimeError
.После загрузки некоторого байт-кода WebAssembly с помощью fetch, мы компилируем и создаём экземпляр модуля с помощью функции {{jsxref("WebAssembly.instantiate()")}}, импортируя функции JavaScript в WebAssembly Module в процессе. Этот промис результирует в объект (result
), содержащий скомпилированные Module
и объекты Instance
. Мы можем вызвать Exported WebAssembly function, которая была экспортирована через Instance
.
var importObject = { imports: { imported_func: function(arg) { console.log(arg); } } }; fetch('simple.wasm').then(response => response.arrayBuffer() ).then(bytes => WebAssembly.instantiate(bytes, importObject) ).then(result => result.instance.exports.exported_func() );
Note: Смотрите пример index.html на GitHub (view it live also), который использует наши fetchAndInstantiate()
библиотечные функции.
Спецификация | Статус | Коммент |
---|---|---|
{{SpecName('WebAssembly JS', '#the-webassembly-object', 'WebAssembly')}} | {{Spec2('WebAssembly JS')}} | Первоначальное определение проекта. |
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 57 | 15[2] | {{CompatGeckoDesktop(52)}}[1] | {{CompatNo}} | 44 | 11 |
Feature | Chrome for Android | Android Webview | Edge Mobile | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | 57 | 57 | {{CompatNo}} | {{CompatGeckoMobile(52)}}[1] | {{CompatNo}} | {{CompatNo}} | 11 |
[1] WebAssembly включён в Firefox 52+, хотя не валиден в Firefox 52 Extended Support Release (ESR.)
[2] В настоящее время поддерживается флаг «Экспериментальные функции JavaScript». Для более подробной информации смотрите этот blog post.