从 `ArrayBuffer` 构造时,两个不相等的 `Uint8Array` 如何相互影响?
How do two unequal `Uint8Array`s influence each other when constructed from an `ArrayBuffer`?
我有一个 ArrayBuffer
,我想从中得到两个单独的 Uint8Array
副本。我尝试在 ArrayBuffer
上使用 Uint8Array
构造函数两次。构造的数组实例不相等。然而,当你改变一个时,它也会以同样的方式改变另一个。这怎么可能,为什么会这样?
另一方面,如果您从 构造新的 Uint8Array
s 构造的 Uint8Array
,它们将在功能上像预期的那样分开。
TypedArray 中的条目实际上存储在底层缓冲区中,如果您 get/set 数组,它 reads/writes to/from 缓冲区。如果您从另一个 TypedArray 创建一个 TypedArray,底层缓冲区将被复制,因此数组将不会被链接。
array.buffer === array1.buffer // true
array1.buffer === array2.buffer // false
我有一个 ArrayBuffer
,我想从中得到两个单独的 Uint8Array
副本。我尝试在 ArrayBuffer
上使用 Uint8Array
构造函数两次。构造的数组实例不相等。然而,当你改变一个时,它也会以同样的方式改变另一个。这怎么可能,为什么会这样?
另一方面,如果您从 构造新的 Uint8Array
s 构造的 Uint8Array
,它们将在功能上像预期的那样分开。
TypedArray 中的条目实际上存储在底层缓冲区中,如果您 get/set 数组,它 reads/writes to/from 缓冲区。如果您从另一个 TypedArray 创建一个 TypedArray,底层缓冲区将被复制,因此数组将不会被链接。
array.buffer === array1.buffer // true
array1.buffer === array2.buffer // false