📜  JavaScript | typedArray.byteOffset 属性(1)

📅  最后修改于: 2023-12-03 15:31:39.336000             🧑  作者: Mango

JavaScript | typedArray.byteOffset 属性

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 个字节。

参考