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

标签 javascript arrays instance arraybuffer uint8array

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

Unequal arrays magically influencing each other

另一方面,如果您从构造的 Uint8Array 构造新的 Uint8Array,它们将按照预期在功能上分离。

Unequal arrays working properly

最佳答案

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

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

关于javascript - 当从 `Uint8Array` 构造时,两个不相等的 `ArrayBuffer` 如何相互影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54372623/

相关文章:

javascript - Node.js - TypeError : res. json 不是函数(在某些路由中工作,在其他路由中不起作用)

javascript - 在对象方法上使用 .call() 不会传递上下文

c++ - 对字符数组感到困惑

javascript - 如何动态更改数组中对象属性的键名

c++ - 基于现有实例创建类的新实例

函数内的javascript函数

javascript - 数组变量 - 如何获取第一个 var

javascript - 将数组转成字符串,用分隔符分隔字符串 - JavaScript

java - 实例A = 实例B,这到底是做什么的?

c# - 编译时错误 - 无法使用实例引用访问成员