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ụ.
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
DataViewmớ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ởiDataView. 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
DataViewtừ đầuArrayBuffercủ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à constructorDataView. 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 trongObject.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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnà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
DataViewnày.
Ví dụ
>Sử dụng DataView
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> |