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

Phương thức ArrayBuffer.slice() trong JavaScript

Đối tượng ArrayBuffer đại diện cho một bộ đệm nhị phân (binary buffer) có độ dài cố định. Phương thức slice() tạo và trả về một ArrayBuffer mới chứa bản sao của một phần dữ liệu từ buffer gốc.

Cú pháp

arrayBuffer.slice(begin[, end])
  • begin: Vị trí bắt đầu (bao gồm), mặc định 0. Chỉ số âm tính từ cuối.
  • end: Vị trí kết thúc (không bao gồm), mặc định byteLength. Chỉ số âm tính từ cuối.
  • Trả về: ArrayBuffer mới chứa dữ liệu đã sao chép

Ví dụ cơ bản

const buffer = new ArrayBuffer(16);
const view = new Int32Array(buffer);
view[1] = 102; // Vị trí byte 4-7

const sliced = buffer.slice(4, 12); // Lấy byte 4-11 (8 byte = 2 Int32)
const slicedView = new Int32Array(sliced);
console.log(slicedView[0]); // 102
console.log(slicedView[1]); // 0

Đặc điểm quan trọng

  • Tạo bản sao (copy), không chia sẻ bộ nhớ với buffer gốc
  • Thay đổi buffer mới không ảnh hưởng buffer gốc và ngược lại
  • Hỗ trợ chỉ số âm (tương tự Array.slice())
  • Nếu end bỏ qua hoặc vượt quá độ dài, cắt đến cuối buffer

So sánh với TypedArray.subarray()

Đặc điểmArrayBuffer.slice()TypedArray.subarray()
Trả vềArrayBuffer mới (copy)TypedArray mới (view cùng bộ nhớ)
Bộ nhớĐộc lậpChia sẻ
Hiệu năngChậm hơn (cấp phát + copy)Nhanh (chỉ tạo view)

Khi nào dùng slice()?

  • Cần tách một phần dữ liệu để truyền đi, lưu trữ độc lập
  • Cần thay đổi dữ liệu cắt ra mà không ảnh hưởng gốc
  • Xử lý protocol mạng, định dạng file nhị phân