Javascript 当从“ArrayBuffer”构造两个不相等的“Uint8Array”时,它们如何相互影响?
我有一个Javascript 当从“ArrayBuffer”构造两个不相等的“Uint8Array”时,它们如何相互影响?,javascript,arrays,instance,arraybuffer,uint8array,Javascript,Arrays,Instance,Arraybuffer,Uint8array,我有一个ArrayBuffer,我想从中获得两个独立的Uint8Array副本。我尝试在ArrayBuffer上使用Uint8Array构造函数两次。构造的数组实例不相等。然而,当你改变一个,它也会以同样的方式改变另一个。这怎么可能,为什么会是这样 另一方面,如果您从构造的Uint8Array构造新的Uint8Array,它们将按预期在功能上分离 TypedArray中的条目实际上存储在底层缓冲区中,如果您获取/设置数组,它将读取/写入缓冲区。如果从另一个TypedArray创建TypedAr
ArrayBuffer
,我想从中获得两个独立的Uint8Array
副本。我尝试在ArrayBuffer
上使用Uint8Array
构造函数两次。构造的数组实例不相等。然而,当你改变一个,它也会以同样的方式改变另一个。这怎么可能,为什么会是这样
另一方面,如果您从构造的Uint8Array
构造新的Uint8Array
,它们将按预期在功能上分离
TypedArray中的条目实际上存储在底层缓冲区中,如果您获取/设置数组,它将读取/写入缓冲区。如果从另一个TypedArray创建TypedArray,则会复制基础缓冲区,因此不会链接数组
array.buffer === array1.buffer // true
array1.buffer === array2.buffer // false
TypedArray中的条目实际上存储在底层缓冲区中,如果您获取/设置数组,它将读取/写入缓冲区。如果从另一个TypedArray创建TypedArray,则会复制基础缓冲区,因此不会链接数组
array.buffer === array1.buffer // true
array1.buffer === array2.buffer // false
如果您可以缩短示例数组,并将您正在使用的代码包含在允许使用
console.log
显示中间结果的中,则会更好。但对于此情况,array1===array2
正在执行引用检查,由于array1
和array2
是Uint8Array
类的不同实例,因此结果是错误的。这就是问题所在!如果它们是不同的数组,当它们的内容被改变时,它们如何相互影响?此功能通常仅在两个变量使用同一实例时出现。因为它们引用相同的缓冲区。这在TypedArray
s中很常见。请参阅。如果您可以缩短示例数组,并将正在使用的代码包含在允许使用控制台.log
显示中间结果的中,则会更好。但对于此情况,array1===array2
正在进行引用检查,由于array1
和array2
是Uint8Array
类的不同实例,因此结果是错误的。这就是问题所在!如果它们是不同的数组,当它们的内容被改变时,它们如何相互影响?此功能通常仅在两个变量使用同一实例时出现。因为它们引用相同的缓冲区。这在TypedArray
s中很常见。看见