Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当从“ArrayBuffer”构造两个不相等的“Uint8Array”时,它们如何相互影响?_Javascript_Arrays_Instance_Arraybuffer_Uint8array - Fatal编程技术网

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中很常见。看见