Thuộc tính DataView.buffer trả về tham chiếu đến ArrayBuffer gốc mà DataView đang quan sát. Đây là thuộc tính chỉ đọc.
Cú pháp
dataView.buffer
Ví dụ cơ bản
const buffer = new ArrayBuffer(156);
const view = new DataView(buffer);
console.log(view.buffer === buffer); // true
console.log(view.buffer.byteLength); // 156
Ứng dụng thực tế
1. Truy cập buffer gốc để tạo view khác
const buffer = new ArrayBuffer(100);
const view1 = new DataView(buffer, 0, 50);
const view2 = new DataView(view1.buffer, 50, 50); // Tạo view thứ 2 từ buffer gốc
console.log(view1.byteLength); // 50
console.log(view2.byteLength); // 50
console.log(view1.buffer === view2.buffer); // true
2. Serialize/Deserialize
function serializeDataView(view) {
// Lấy buffer gốc để gửi qua postMessage, lưu file, v.v.
return view.buffer;
}
function deserializeDataView(buffer, byteOffset, byteLength) {
return new DataView(buffer, byteOffset, byteLength);
}
3. Kiểm tra chung buffer
function viewsShareBuffer(view1, view2) {
return view1.buffer === view2.buffer;
}
Lưu ý
- Trả về cùng đối tượng ArrayBuffer được truyền vào constructor
- Không tạo bản sao - chia sẻ bộ nhớ
- Hữu ích khi cần truyền buffer qua
postMessage(transferable) DataViewcó thể chỉ xem một phần buffer (byteOffset,byteLength), nhưng.bufferluôn trả về buffer đầy đủ