WebAssembly.Memory.prototype.buffer

Baseline 已广泛支持

此功能已非常成熟,可在多种设备和浏览器版本上使用。自 2017 年 10 月以来,它已在各大浏览器中可用。

WebAssembly.Memory 对象的只读 buffer 原型属性返回内存中包含的缓冲区。根据内存是使用 shared: true 构建的还是未使用的,该缓冲区要么是 ArrayBuffer,要么是 SharedArrayBuffer

示例

使用 buffer

以下示例(请参阅 GitHub 上的 memory.html,以及 在线查看)使用 WebAssembly.instantiateStreaming() 函数获取并实例化加载的 memory.wasm 字节码,同时导入上面一行中创建的内存。然后,它将一些值存储在该内存中,导出一个函数,并使用导出的函数对这些值进行求和。

js
const memory = new WebAssembly.Memory({
  initial: 10,
  maximum: 100,
});

WebAssembly.instantiateStreaming(fetch("memory.wasm"), {
  js: { mem: memory },
}).then((obj) => {
  const summands = new DataView(memory.buffer);
  for (let i = 0; i < 10; i++) {
    summands.setUint32(i * 4, i, true); // WebAssembly is little endian
  }
  const sum = obj.instance.exports.accumulate(0, 10);
  console.log(sum);
});

规范

规范
WebAssembly JavaScript 接口
# dom-memory-buffer

浏览器兼容性

另见