Как два неравных `Uint8Array` влияют друг на друга при построении из ArrayBuffer? - PullRequest
0 голосов
/ 25 января 2019

У меня есть ArrayBuffer, и я хочу получить две отдельные Uint8Array копии с него.Я пытаюсь сделать это, дважды используя конструктор Uint8Array на ArrayBuffer.Экземпляры построенного массива не равны.Тем не менее, когда вы изменяете одно, оно изменяет другое таким же образом.Как это возможно и почему это так?

Unequal arrays magically influencing each other

С другой стороны, если вы создаете новый Uint8Array s из построенного Uint8Array они будут функционально разделены, как и следовало ожидать.

Unequal arrays working properly

1 Ответ

0 голосов
/ 26 января 2019

Записи внутри TypedArray фактически хранятся в базовом буфере, если вы получаете / устанавливаете массив, он читает / записывает в / из буфера. Если вы создадите TypedArray из другого TypedArray, базовый буфер будет скопирован и, следовательно, массивы не будут связаны.

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