代码之家  ›  专栏  ›  技术社区  ›  Grant Gryczan

从“arraybuffer”构造时,两个不相等的“uint8array”如何相互影响?

  •  0
  • Grant Gryczan  · 技术社区  · 6 年前

    我有一个 ArrayBuffer 我想要两个分开的 Uint8Array 从中复制。我尝试使用 UIT8阵列 上的构造函数 阵列缓冲器 两次。构造的数组实例不相等。然而,当你改变其中一个,它会以同样的方式改变另一个。这怎么可能?为什么会这样?

    Unequal arrays magically influencing each other

    另一方面,如果你建造新的 UIT8阵列 S 构造的 UIT8阵列 ,它们将按预期的功能分离。

    Unequal arrays working properly

    1 回复  |  直到 6 年前
        1
  •  2
  •   Jonas Wilms    6 年前

    typedarray中的条目实际上存储在底层缓冲区中,如果您获取/设置数组,它将对缓冲区进行读/写操作。如果从另一个typedarray创建typedarray,则将复制底层缓冲区,因此不会链接数组。

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