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

How do two unequal `Uint8Array`s influence each other when constructed from an `ArrayBuffer`?

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

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

TypedArray 中的条目实际上存储在底层缓冲区中,如果您 get/set 数组,它 reads/writes to/from 缓冲区。如果您从另一个 TypedArray 创建一个 TypedArray,底层缓冲区将被复制,因此数组将不会被链接。

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