📅  最后修改于: 2023-12-03 15:31:39.336000             🧑  作者: Mango
TypedArray
对象的 byteOffset
属性返回数组缓冲区在内存中的偏移量。偏移量是以字节为单位的,表示从整个 ArrayBuffer
的开头到此 TypedArray
开头的距离。
typedArray.byteOffset;
无
一个表示偏移量的非负整数。
byteOffset
属性是只读的,只能在对象创建时设置一次。它是存储在对象的内部私有属性中的,并且不会被 ArrayBuffer
分配的字节数所改变,与 byteLength
属性无关。
const buffer = new ArrayBuffer(16);
const int32Array = new Int32Array(buffer, 4, 3);
console.log(int32Array.byteOffset); // 4
const uint8Array = new Uint8Array(buffer);
console.log(uint8Array.byteOffset); // 0
在上面的例子中,我们创建了一个 ArrayBuffer
,大小为 16 个字节。然后我们创建了两个不同类型的 TypedArray
:
Int32Array
对象,它占用 ArrayBuffer
的第 2 到 10 个字节。Uint8Array
对象,它占用 ArrayBuffer
的第 0 到 15 个字节。因此,int32Array.byteOffset
值为 4,因为它距离 ArrayBuffer
真正的开始位置的偏移量为 4 个字节。而 uint8Array.byteOffset
值为 0,因为它直接从 ArrayBuffer
开始位置开始。
const buffer = new ArrayBuffer(32);
const uint8Buffer = new Uint8Array(buffer, 16, 8);
console.log(uint8Buffer.byteOffset); // 16
在上面的示例中,我们创建了一个大小为 32 个字节的 ArrayBuffer
。我们使用 Uint8Array
构造函数创建了一个 Uint8Array
对象 uint8Buffer
,该对象从 ArrayBuffer
的第 16 个字节开始,长度为 8 个字节。因此,byteOffset
属性的值为 16,表示数组缓冲区在内存中的偏移量距离 ArrayBuffer
起始位置的距离为 16 个字节。