WebAssembly.Memory.prototype.buffer

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

示例

使用缓冲区

以下示例(参见 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

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅