此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

WebAssembly.Instance

基线 广泛可用

自 2017年10月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

>

WebAssembly.Instance 对象是 WebAssembly.Module 的一个有状态、可执行的实例。Instance 对象包含所有的、允许从 JavaScript 调用 WebAssembly 代码的导出的 WebAssembly 函数

构造函数

WebAssembly.Instance()

创建一个新的 Instance 对象。

实例属性

exports

返回一个将所有从 WebAssembly 模块实例导出的函数作为成员的对象,让 JavaScript 能访问以及使用这些函数。这个对象是只读的。

示例

>

同步实例化 WebAssembly 模块

可以调用 WebAssembly.Instance() 同步地实例化一个指定的 WebAssembly.Module 对象,例如:

js
const importObject = {
  my_namespace: {
    imported_func(arg) {
      console.log(arg);
    },
  },
};

fetch("simple.wasm")
  .then((response) => response.arrayBuffer())
  .then((bytes) => {
    const mod = new WebAssembly.Module(bytes);
    const instance = new WebAssembly.Instance(mod, importObject);
    instance.exports.exported_func();
  });

获得一个 Instance 的首选方式是异步的,例如像这样使用 WebAssembly.instantiateStreaming() 函数:

js
const importObject = {
  my_namespace: {
    imported_func(arg) {
      console.log(arg);
    },
  },
};

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

示例也说明如何使用 exports 属性来访问导出的函数。

规范

规范
WebAssembly JavaScript Interface>
# instances>

浏览器兼容性

参见