DataView对象

找出什么是DataView对象以及如何使用它

DataView是对ArrayBuffer, 喜欢类型数组,但在这种情况下,数组中的项目可以具有不同的大小和类型。

这是一个例子:

const buffer = new ArrayBuffer(64)
const view = new DataView(buffer)

由于这是一个缓冲区视图,因此我们可以指定要从哪个字节开始以及长度:

const view = new DataView(buffer, 10) //start at byte 10
const view = new DataView(buffer, 10, 30) //start at byte 10, and add 30 items

如果不添加这些其他参数,则视图从位置0开始,并加载缓冲区中存在的所有字节。

我们可以使用一组方法将数据添加到缓冲区中:

  • setInt8()
  • setInt16()
  • setInt32()
  • setUint8()
  • setUint16()
  • setUint32()
  • setFloat32()
  • setFloat64()

这是调用这些方法之一的方法:

const buffer = new ArrayBuffer(64)
const view = new DataView(buffer)
view.setInt16(0, 2019)

默认情况下,数据使用大端符号。您可以通过添加第三个参数来覆盖此设置并使用little endiantrue价值:

const buffer = new ArrayBuffer(64)
const view = new DataView(buffer)
view.setInt16(0, 2019, true)

这是我们如何从视图中获取数据的方法:

  • getInt8()
  • getInt16()
  • getInt32()
  • getUint8()
  • getUint16()
  • getUint32()
  • getFloat32()
  • getFloat64()

例子:

const buffer = new ArrayBuffer(64)
const view = new DataView(buffer)
view.setInt16(0, 2019)
view.getInt16(0) //2019

由于一个DataView是一个ArrayBufferView,我们有3个只读属性:

  • buffer指向原始ArrayBuffer
  • byteOffset是该缓冲区的偏移量
  • byteLength是其内容的长度(以字节为单位)

要记住的一件事是类型数组不允许我们控制字节序:它使用系统的字节序。总的来说,这很好,因为我们所说的主要用例是使用多媒体API之一在本地使用数组。

如果在另一个系统上传输类型数组的数据,则使用Big Endian并使用Little Endian的数据可能编码不正确。

如果您需要这种控制,资料检视是一个完美的选择。

免费下载我的JavaScript初学者手册


更多浏览器教程: