ArrayBuffer.prototype.slice()
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.
Phương thức slice() của các instance ArrayBuffer trả về một ArrayBuffer mới có nội dung là bản sao của các byte của ArrayBuffer này từ start, bao gồm, đến end, không bao gồm. Nếu start hoặc end là âm, nó tham chiếu đến chỉ số từ cuối mảng, thay vì từ đầu.
Try it
// Create an ArrayBuffer with a size in bytes
const buffer = new ArrayBuffer(16);
const int32View = new Int32Array(buffer);
// Produces Int32Array [0, 0, 0, 0]
int32View[1] = 42;
const sliced = new Int32Array(buffer.slice(4, 12));
// Produces Int32Array [42, 0]
console.log(sliced[0]);
// Expected output: 42
Cú pháp
js
slice()
slice(start)
slice(start, end)
Tham số
startOptional-
Chỉ số dựa trên 0 để bắt đầu trích xuất, được chuyển đổi thành số nguyên.
- Chỉ số âm đếm ngược từ cuối buffer — nếu
-buffer.length <= start < 0, thìstart + buffer.lengthđược dùng. - Nếu
start < -buffer.lengthhoặcstartbị bỏ qua, thì0được dùng. - Nếu
start >= buffer.length, một buffer rỗng được trả về.
- Chỉ số âm đếm ngược từ cuối buffer — nếu
endOptional-
Chỉ số dựa trên 0 để kết thúc trích xuất, được chuyển đổi thành số nguyên.
slice()trích xuất đến nhưng không bao gồmend.- Chỉ số âm đếm ngược từ cuối buffer — nếu
-buffer.length <= end < 0, thìend + buffer.lengthđược dùng. - Nếu
end < -buffer.length,0được dùng. - Nếu
end >= buffer.lengthhoặcendbị bỏ qua làundefined,buffer.lengthđược dùng, khiến tất cả các phần tử đến cuối được trích xuất. - Nếu
endngụ ý một vị trí trước hoặc tại vị trí màstartngụ ý, một buffer rỗng được trả về.
- Chỉ số âm đếm ngược từ cuối buffer — nếu
Giá trị trả về
Một ArrayBuffer mới chứa các phần tử được trích xuất. Nó không thể thay đổi kích thước, ngay cả khi bản gốc có thể.
Ví dụ
>Sao chép một ArrayBuffer
js
const buf1 = new ArrayBuffer(8);
const buf2 = buf1.slice(0);
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-arraybuffer.prototype.slice> |