DataView.prototype.byteOffset

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

DataView 实例的 byteOffset 访问器属性返回此视图相对于其 ArrayBufferSharedArrayBuffer 起始位置的偏移量(以字节为单位)。

试一试

// Create an ArrayBuffer with a size in bytes
const buffer = new ArrayBuffer(16);

const view = new DataView(buffer, 12, 4); // From byte 12 for the next 4 bytes

console.log(view.byteOffset);
// Expected output: 12

描述

byteOffset 属性是一个访问器属性,其 set 访问器函数为 undefined,这意味着您只能读取此属性。该值在创建 DataView 时建立,并且无法更改。但是,如果底层缓冲区被重置,导致查看的范围不再有效,则 byteOffset 会变为 0。

示例

使用 byteOffset 属性

js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.byteOffset; // 0 (no offset specified)

const dataview2 = new DataView(buffer, 3);
dataview2.byteOffset; // 3 (as specified when constructing the DataView)

const buffer2 = new ArrayBuffer(16, { maxByteLength: 32 });
const dataviewLengthTracking = new DataView(buffer2, 4);
dataviewLengthTracking.byteOffset; // 4
buffer2.resize(3);
dataviewLengthTracking.byteOffset; // 0 (viewed range is no longer valid)

规范

规范
ECMAScript® 2026 语言规范
# sec-get-dataview.prototype.byteoffset

浏览器兼容性

另见