SharedArrayBuffer.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 December 2021.
SharedArrayBuffer
实例的 slice()
方法返回一个新的 SharedArrayBuffer
,��包含当前 SharedArrayBuffer
从 start
开始(包含)到 end
结束(不含)的字节内容的副本。如果 start
或 end
为负数,则表示从数组末尾开始计数的索引,即与从开头开始的方向相反。
尝试一下
// Create a SharedArrayBuffer with a size in bytes
const buffer = new SharedArrayBuffer(16);
const int32View = new Int32Array(buffer); // Create the view
// Produces Int32Array [0, 0, 0, 0]
int32View[1] = 42;
const sliced = new Int32Array(buffer.slice(4, 12));
console.log(sliced);
// Expected output: Int32Array [42, 0]
语法
js
slice()
slice(start)
slice(start, end)
参数
start
可选-
要开始提取的位置索引(从 0 开始),将被转换为整数。
- 负数索引将会从缓冲区末尾开始计算——如果
start < 0
,那么将会使用start + buffer.length
。 - 如果
start < -buffer.length
或省略了start
,则会使用0
。 - 如果
start >= buffer.length
,则不会提取任何内容。
- 负数索引将会从缓冲区末尾开始计算——如果
end
可选-
要结束提取的位置索引(从 0 开始),将被转换为整数。
slice()
提取到但不包括end
。- 负数索引将会从缓冲区末尾开始计算——如果
end < 0
,那么将会使用end + buffer.length
。 - 如果
end < -buffer.length
,则会使用0
。 - 如果
end >= buffer.length
或省略了end
,则会使用buffer.length
,则会导致直到末尾的所有元素都被提取。 - 如果标准化后的
end
位置在start
位置之前,则不会提取任何内容。
- 负数索引将会从缓冲区末尾开始计算——如果
返回值
一个新的 SharedArrayBuffer
,包含提取的元素。
示例
使用 slice()
js
const sab = new SharedArrayBuffer(1024);
sab.slice(); // SharedArrayBuffer { byteLength: 1024 }
sab.slice(2); // SharedArrayBuffer { byteLength: 1022 }
sab.slice(-2); // SharedArrayBuffer { byteLength: 2 }
sab.slice(0, 1); // SharedArrayBuffer { byteLength: 1 }
规范
Specification |
---|
ECMAScript® 2026 Language Specification # sec-sharedarraybuffer.prototype.slice |