描述
字节序
多字节数字格式在内存中的表示方式因机器架构而异——有关解释,请参阅 字节序。DataView 访问器提供了如何访问数据的显式控制,无论执行计算机的字节序如何。例如,WebAssembly 内存始终是小端序,因此你应该使用 DataView 而不是类型化数组来读写多字节值。请参阅 WebAssembly.Memory 了解示例。
const littleEndian = (() => {
const buffer = new ArrayBuffer(2);
new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
// Int16Array uses the platform's endianness.
return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true or false
注意: DataView 默认使用大端序进行读写,但大多数平台使用小端序。
构造函数
DataView()-
创建一个新的
DataView对象。
实例属性
这些属性定义在 DataView.prototype 上,并被所有 DataView 实例共享。
DataView.prototype.buffer-
返回
DataView引用的ArrayBuffer。 DataView.prototype.byteLength-
返回
DataView的长度(以字节为单位)。 DataView.prototype.byteOffset-
返回
DataView相对于其ArrayBuffer起始位置的偏移量(以字节为单位)。 DataView.prototype.constructor-
创建实例对象的构造函数。对于
DataView实例,初始值为DataView构造函数。 DataView.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]属性的初始值为字符串"DataView"。该属性用于Object.prototype.toString()。
实例方法
DataView.prototype.getBigInt64()-
从此
DataView的指定字节偏移量开始读取 8 个字节,并将其解释为 64 位有符号整数。 DataView.prototype.getBigUint64()-
从此
DataView的指定字节偏移量开始读取 8 个字节,并将其解释为 64 位无符号整数。 DataView.prototype.getFloat16()-
从此
DataView的指定字节偏移量开始读取 2 个字节,并将其解释为 16 位浮点数。 DataView.prototype.getFloat32()-
从此
DataView的指定字节偏移量开始读取 4 个字节,并将其解释为 32 位浮点数。 DataView.prototype.getFloat64()-
从此
DataView的指定字节偏移量开始读取 8 个字节,并将其解释为 64 位浮点数。 DataView.prototype.getInt16()-
从此
DataView的指定字节偏移量开始读取 2 个字节,并将其解释为 16 位有符号整数。 DataView.prototype.getInt32()-
从此
DataView的指定字节偏移量开始读取 4 个字节,并将其解释为 32 位有符号整数。 DataView.prototype.getInt8()-
从此
DataView的指定字节偏移量读取 1 个字节,并将其解释为 8 位有符号整数。 DataView.prototype.getUint16()-
从此
DataView的指定字节偏移量开始读取 2 个字节,并将其解释为 16 位无符号整数。 DataView.prototype.getUint32()-
从此
DataView的指定字节偏移量开始读取 4 个字节,并将其解释为 32 位无符号整数。 DataView.prototype.getUint8()-
从此
DataView的指定字节偏移量读取 1 个字节,并将其解释为 8 位无符号整数。 DataView.prototype.setBigInt64()-
接受一个 BigInt,并将其作为 64 位有符号整数存储在此
DataView的指定字节偏移量开始的 8 个字节中。 DataView.prototype.setBigUint64()-
接受一个 BigInt,并将其作为 64 位无符号整数存储在此
DataView的指定字节偏移量开始的 8 个字节中。 DataView.prototype.setFloat16()-
接受一个数字,并将其作为 16 位浮点数存储在此
DataView的指定字节偏移量开始的 2 个字节中。 DataView.prototype.setFloat32()-
接受一个数字,并将其作为 32 位浮点数存储在此
DataView的指定字节偏移量开始的 4 个字节中。 DataView.prototype.setFloat64()-
接受一个数字,并将其作为 64 位浮点数存储在此
DataView的指定字节偏移量开始的 8 个字节中。 DataView.prototype.setInt16()-
接受一个数字,并将其作为 16 位有符号整数存储在此
DataView的指定字节偏移量处的 2 个字节中。 DataView.prototype.setInt32()-
接受一个数字,并将其作为 32 位有符号整数存储在此
DataView的指定字节偏移量处的 4 个字节中。 DataView.prototype.setInt8()-
接受一个数字,并将其作为 8 位有符号整数存储在此
DataView的指定字节偏移量处的字节中。 DataView.prototype.setUint16()-
接受一个数字,并将其作为 16 位无符号整数存储在此
DataView的指定字节偏移量处的 2 个字节中。 DataView.prototype.setUint32()-
接受一个数字,并将其作为 32 位无符号整数存储在此
DataView的指定字节偏移量处的 4 个字节中。 DataView.prototype.setUint8()-
接受一个数字,并将其作为 8 位无符号整数存储在此
DataView的指定字节偏移量处的字节中。
示例
使用 DataView
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer, 0);
view.setInt16(1, 42);
view.getInt16(1); // 42
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-dataview-objects |
浏览器兼容性
加载中…