DataView
DataView 视图是一个可以从二进制 ArrayBuffer 对象中读写多种数值类型的底层接口,使用它时,不用考虑不同平台的字节序(endianness)问题。
DataView 与 字节序
- 多字节的数字格式在内存中的表示方式因机器架构而异(与
字节序相关)。 - DataView 访问器(accessor)提供了对如何访问数据的明确控制,而不管执行代码的计算机的字节序如何。
DataView 64 位整数值
- 某些浏览器不支持 DataView.prototype.setBigInt64() 和 DataView.prototype.setBigUint64()。因此,要在代码中启用跨浏览器的 64 位操作,你可以实现自己的 getUint64() 函数,以获得精度达到 Number.MAX_SAFE_INTEGER 的值——这对于某些情况足够使用。
- 如果你需要完整的 64 位的范围,你可以创建 BigInt。此外,尽管原生 BigInt 比等效的用户态的库快得多,但由于其大小可变的性质,BigInt 始终比 JavaScript 中的 32 位整数要慢得多。
构造函数
javascript
new DataView(buffer)
new DataView(buffer, byteOffset)
new DataView(buffer, byteOffset, byteLength)new DataView(buffer)
new DataView(buffer, byteOffset)
new DataView(buffer, byteOffset, byteLength)- 参数:
buffer: DataView对象的存储的现有ArrayBuffer或SharedArrayBuffer。byteOffset[可选]:缓冲区中第一个字节的偏移量(以字节为单位)。如果未指定,缓冲区视图将从第一个字节开始。byteLength[可选]:字节数组长度。如果未指定,视图的长度将与缓冲区的长度匹配。
javascript
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer, 0);
view.setInt16(1, 42);
view.getInt16(1); // 42const buffer = new ArrayBuffer(16);
const view = new DataView(buffer, 0);
view.setInt16(1, 42);
view.getInt16(1); // 42实例属性
DataView.prototype.buffer
- 描述:描述了在构造时被 DataView 引用的 ArrayBuffer。
DataView.prototype.byteLength
- 描述:描述了视图从它的 ArrayBuffer 开始的字节长度。
DataView.prototype.byteOffset
- 描述:描述了从 ArrayBuffer 开始的字节偏移量。
实例方法:
getBigInt64()
- 描述:从 DataView 开始获取一个指定偏移量的有符号 64 位整数 (long long) 。
get+TypedArray() (10个)
- 此处的
TypedArray是一个具体的实例化对象,它是TypedArray的子类。具体使用查阅文档。
set+TypedArray() (11个)
- 此处的
TypedArray是一个具体的实例化对象,它是TypedArray的子类。具体使用查阅文档。