DataView 是 JavaScript 中的一个对象,它允许你处理存储在 ArrayBuffer 中的二进制数据。它提供了一个低级别的接口用于读写 ArrayBuffer 中的 1、2 和 4 字节有符号和无符号整数,以及 4 和 8 字节的浮点数。
ArrayBuffer 是一个字节数组,通常在其他语言中被称为“字节数组”。你不能像操作普通数组那样直接操纵 ArrayBuffer 的数据。通过 ArrayBuffer,你可以创建 DataView 对象,该对象以特定格式表示缓冲区。你可以使用 DataView 对象来读取和写入缓冲区的内容。
语法
下面是创建 DataView 对象的语法:
new DataView(buffer, byteOffset, byteLength)
在这里,buffer
是用于存储的现有 ArrayBuffer。byteOffset
参数(可选)代表缓冲区中第一个字节的偏移量,而 byteLength
参数(也是可选的)代表字节数组中的元素数量。
示例:创建 DataView 对象
下面的例子演示了如何在 JavaScript 中创建 DataView 对象。
<html>
<body>
<script>
const buffer = new ArrayBuffer(16);
const data_view = new DataView(buffer);
document.write("data_view 的类型是: " + typeof(data_view));
</script>
</body>
</html>
输出:
data_view 的类型是: object
JavaScript DataView 属性
以下是一个 DataView 对象的属性列表:
序号 |
属性 |
描述 |
1 |
buffer |
返回 DataView 对象关联的 ArrayBuffer 或 SharedArrayBuffer。 |
2 |
byteLength |
返回此视图的长度(以字节为单位)。 |
3 |
byteOffset |
返回此视图从其 ArrayBuffer 或 SharedArrayBuffer 起始位置的偏移量(以字节为单位)。 |
JavaScript DataView 方法
以下是 JavaScript DataView 对象的方法列表:
序号 |
方法 |
描述 |
1 |
getBigInt64() |
返回范围在 -2^63 至 2^63-1 内的 BigInt。 |
2 |
getBigUint64() |
返回范围在 0 至 2^64-1 内的 BigInt。 |
3 |
getFloat32() |
返回范围在 -3.4e38 至 3.4e38 内的浮点数。 |
4 |
getFloat64() |
返回任意数值。 |
5 |
getInt16() |
返回范围在 -32768 至 32767 内的整数。 |
6 |
getInt32() |
返回范围在 -2^31 至 2^31-1 内的整数。 |
7 |
getInt8() |
返回范围在 -128 至 127 内的整数。 |
8 |
getUint16() |
返回范围在 0 至 65535 内的整数。 |
9 |
getUint32() |
返回范围在 0 至 4294967295 内的整数。 |
10 |
getUint8() |
返回范围在 0 至 255 内的整数。 |
11 |
setBigInt64() |
设置范围在 -2^63 至 2^63-1 内的 BigInt。返回 undefined。 |
12 |
setBigUint64() |
设置范围在 0 至 2^64-1 内的 BigInt。返回 undefined。 |
13 |
setFloat32() |
设置范围在 -3.4e38 至 3.4e38 内的浮点数。返回 undefined。 |
14 |
setFloat64() |
设置任意数值。返回 undefined。 |
15 |
setInt16() |
设置范围在 -32768 至 32767 内的整数。返回 undefined。 |
16 |
setInt32() |
设置范围在 -2^31 至 2^31-1 内的整数。返回 undefined。 |
17 |
setInt8() |
设置范围在 -128 至 127 内的整数。返回 undefined。 |
18 |
setUint16() |
设置范围在 0 至 65535 内的整数。返回 undefined。 |
19 |
setUint32() |
设置范围在 0 至 4294967295 内的整数。返回 undefined。 |
20 |
setUint8() |
设置范围在 0 至 255 内的整数。返回 undefined。 |