此页面由社区从英文翻译而来。了解更多并加入 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

浏览器兼容性

参见