DataView

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

Khung nhìn DataView cung cấp giao diện cấp thấp để đọc và ghi nhiều kiểu số trong ArrayBuffer nhị phân, mà không cần quan tâm đến thứ tự byte (endianness) của nền tảng.

Mô tả

Endianness

Các định dạng số nhiều byte được biểu diễn trong bộ nhớ khác nhau tùy theo kiến trúc máy — xem Endianness để giải thích. Các bộ truy cập DataView cung cấp kiểm soát rõ ràng cách dữ liệu được truy cập, bất kể thứ tự byte của máy tính đang thực thi. Ví dụ, bộ nhớ WebAssembly luôn là little-endian, vì vậy bạn nên sử dụng DataView thay vì mảng được gõ kiểu để đọc và ghi các giá trị nhiều byte. Xem WebAssembly.Memory để có ví dụ.

js
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

Note: DataView mặc định đọc và ghi theo big-endian, nhưng hầu hết các nền tảng sử dụng little-endian.

Constructor

DataView()

Tạo đối tượng DataView mới.

Thuộc tính instance

Các thuộc tính này được định nghĩa trên DataView.prototype và được chia sẻ bởi tất cả các instance DataView.

DataView.prototype.buffer

Trả về ArrayBuffer được tham chiếu bởi DataView.

DataView.prototype.byteLength

Trả về độ dài (tính bằng byte) của DataView.

DataView.prototype.byteOffset

Trả về độ lệch (tính bằng byte) của DataView từ đầu ArrayBuffer của nó.

DataView.prototype.constructor

Hàm constructor đã tạo đối tượng instance. Đối với các instance DataView, giá trị khởi tạo là constructor DataView.

DataView.prototype[Symbol.toStringTag]

Giá trị khởi tạo của thuộc tính [Symbol.toStringTag] là chuỗi "DataView". Thuộc tính này được dùng trong Object.prototype.toString().

Phương thức instance

DataView.prototype.getBigInt64()

Đọc 8 byte bắt đầu từ độ lệch byte được chỉ định của DataView này và diễn giải chúng là số nguyên có dấu 64-bit.

DataView.prototype.getBigUint64()

Đọc 8 byte bắt đầu từ độ lệch byte được chỉ định của DataView này và diễn giải chúng là số nguyên không dấu 64-bit.

DataView.prototype.getFloat16()

Đọc 2 byte bắt đầu từ độ lệch byte được chỉ định của DataView này và diễn giải chúng là số dấu phẩy động 16-bit.

DataView.prototype.getFloat32()

Đọc 4 byte bắt đầu từ độ lệch byte được chỉ định của DataView này và diễn giải chúng là số dấu phẩy động 32-bit.

DataView.prototype.getFloat64()

Đọc 8 byte bắt đầu từ độ lệch byte được chỉ định của DataView này và diễn giải chúng là số dấu phẩy động 64-bit.

DataView.prototype.getInt16()

Đọc 2 byte bắt đầu từ độ lệch byte được chỉ định của DataView này và diễn giải chúng là số nguyên có dấu 16-bit.

DataView.prototype.getInt32()

Đọc 4 byte bắt đầu từ độ lệch byte được chỉ định của DataView này và diễn giải chúng là số nguyên có dấu 32-bit.

DataView.prototype.getInt8()

Đọc 1 byte tại độ lệch byte được chỉ định của DataView này và diễn giải nó là số nguyên có dấu 8-bit.

DataView.prototype.getUint16()

Đọc 2 byte bắt đầu từ độ lệch byte được chỉ định của DataView này và diễn giải chúng là số nguyên không dấu 16-bit.

DataView.prototype.getUint32()

Đọc 4 byte bắt đầu từ độ lệch byte được chỉ định của DataView này và diễn giải chúng là số nguyên không dấu 32-bit.

DataView.prototype.getUint8()

Đọc 1 byte tại độ lệch byte được chỉ định của DataView này và diễn giải nó là số nguyên không dấu 8-bit.

DataView.prototype.setBigInt64()

Nhận BigInt và lưu trữ nó như số nguyên có dấu 64-bit trong 8 byte bắt đầu từ độ lệch byte được chỉ định của DataView này.

DataView.prototype.setBigUint64()

Nhận BigInt và lưu trữ nó như số nguyên không dấu 64-bit trong 8 byte bắt đầu từ độ lệch byte được chỉ định của DataView này.

DataView.prototype.setFloat16()

Nhận số và lưu trữ nó như số thực 16-bit trong 2 byte bắt đầu từ độ lệch byte được chỉ định của DataView này.

DataView.prototype.setFloat32()

Nhận số và lưu trữ nó như số thực 32-bit trong 4 byte bắt đầu từ độ lệch byte được chỉ định của DataView này.

DataView.prototype.setFloat64()

Nhận số và lưu trữ nó như số thực 64-bit trong 8 byte bắt đầu từ độ lệch byte được chỉ định của DataView này.

DataView.prototype.setInt16()

Nhận số và lưu trữ nó như số nguyên có dấu 16-bit trong 2 byte tại độ lệch byte được chỉ định của DataView này.

DataView.prototype.setInt32()

Nhận số và lưu trữ nó như số nguyên có dấu 32-bit trong 4 byte tại độ lệch byte được chỉ định của DataView này.

DataView.prototype.setInt8()

Nhận số và lưu trữ nó như số nguyên có dấu 8-bit trong byte tại độ lệch byte được chỉ định của DataView này.

DataView.prototype.setUint16()

Nhận số và lưu trữ nó như số nguyên không dấu 16-bit trong 2 byte tại độ lệch byte được chỉ định của DataView này.

DataView.prototype.setUint32()

Nhận số và lưu trữ nó như số nguyên không dấu 32-bit trong 4 byte tại độ lệch byte được chỉ định của DataView này.

DataView.prototype.setUint8()

Nhận số và lưu trữ nó như số nguyên không dấu 8-bit trong byte tại độ lệch byte được chỉ định của DataView này.

Ví dụ

Sử dụng DataView

js
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer, 0);

view.setInt16(1, 42);
view.getInt16(1); // 42

Đặc tả kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# sec-dataview-objects

Tương thích trình duyệt

Xem thêm