【发布时间】:2019-06-19 17:19:45
【问题描述】:
我有一个ArrayBuffer,我想从中获得两个单独的Uint8Array 副本。我尝试在ArrayBuffer 上使用Uint8Array 构造函数两次。构造的数组实例不相等。然而,当你改变一个时,它会以同样的方式改变另一个。这怎么可能,为什么会这样?
另一方面,如果您从构造的Uint8Array 构造新的Uint8Arrays,它们将在功能上如预期的那样分开。
【问题讨论】:
-
如果您可以缩短示例数组并将您正在使用的代码包含在Stack Snippet 中会更好,这允许使用
console.log来显示中间结果。 -
但是为此,
array1 === array2正在做参考检查,并且由于array1和array2是Uint8Array类的不同实例,因此结果为 false。 -
这就是重点!如果它们是不同的数组,当它们的内容发生变化时,它们如何相互影响?此功能通常仅在两个变量使用同一个实例时才会出现。
-
因为它们引用了相同的缓冲区。
-
TypedArrays 很常见。见MDN's docs on thebufferproperty。
标签: javascript arrays instance arraybuffer uint8array