Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thuộc tính DataView.buffer trong JavaScript

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)
  • DataView có thể chỉ xem một phần buffer (byteOffset, byteLength), nhưng .buffer luôn trả về buffer đầy đủ