从ArrayBuffer构造两个不相等的Uint8Array会如何相互影响?

时间:2019-01-25 20:54:06

标签: javascript arrays instance arraybuffer uint8array

我有一个ArrayBuffer,我想从中得到两个单独的Uint8Array副本。我通过两次在Uint8Array上使用ArrayBuffer构造函数来尝试此操作。构造的数组实例不相等。但是,当您更改一个时,它也会以相同的方式更改另一个。这怎么可能?为什么会这样?

Unequal arrays magically influencing each other

另一方面,如果从构造的Uint8Array构造新的Uint8Array ,它们将在功能上如预期的那样分开。

Unequal arrays working properly

1 个答案:

答案 0 :(得分:2)

TypedArray内部的条目实际上存储在基础缓冲区中,如果获取/设置数组,则它会从缓冲区读取/写入数据。如果从另一个TypedArray创建一个TypedArray,则将复制基础缓冲区,因此将不会链接这些数组。

 array.buffer === array1.buffer // true
 array1.buffer === array2.buffer // false