答案 0 :(得分:4)
在node.js中,Buffer
和WebAssembly Memory
对象都有一个buffer
属性,类型为ArrayBuffer
,它本身被定义为Typed Arrays in ECMAScript/JavaScript 2015的一部分
node --version
v8.1.2
node
> mem = new WebAssembly.Memory({initial: 10});
Memory {}
> buf = new Buffer("abc")
<Buffer 61 62 63>
> mem.buffer
ArrayBuffer { byteLength: 655360 }
> buf.buffer
ArrayBuffer { byteLength: 8192 }
普通的ArrayBuffer对象只是一个字节流的容器。为了访问和使用它,您必须将其包装/转换为类型化数组(例如Uint8Array,DataView等),node.js缓冲区或WebAssembly内存。
答案 1 :(得分:3)
一个显着差异是,WebAssembly.Memory
可通过Memory.prototype.grow
进行调整,而Buffer
则不会。{/ p>
另一个是WebAssembly.Memory
的设计使得硬件内存保护可用于删除动态边界检查,因此其长度被限制为64kb的倍数。 Buffer
可以有任意字节长度。