![](/img/trans.png)
[英]What's the syntax difference of JavaScript between node.js and browsers?
[英]What's the difference between node.js Buffer and WebAssembly Memory?
在node.js中, Buffer
和WebAssembly Memory
对象都具有buffer
属性,该属性的类型为ArrayBuffer
,其本身被定义为ECMAScript / JavaScript 2015中的Typed Arrays的一部分。
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对象只是一个字节流的容器。 为了访问和使用它,您必须将其包装/转换为Typed Array(例如Uint8Array,DataView等),node.js缓冲区或WebAssembly内存。
一个重要的区别是WebAssembly.Memory
可以通过Memory.prototype.grow
调整大小,而Buffer
不能。
另一个是WebAssembly.Memory
的设计,以便可以使用硬件内存保护来删除动态范围检查,因此其长度限制为64kb的倍数。 Buffer
可以具有任意字节长度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.