SharedArrayBuffer.prototype.slice()
slice() 方法用于 SharedArrayBuffer 实例,它会返回一个新的 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可选-
用于开始提取的零基索引,转换为整数。
- 负数索引从缓冲区的末尾开始计数 — 如果
-buffer.length <= start < 0,则使用start + buffer.length。 - 如果
start < -buffer.length或省略了start,则使用0。 - 如果
start >= buffer.length,则返回一个空缓冲区。
- 负数索引从缓冲区的末尾开始计数 — 如果
end可选-
用于结束提取的零基索引,转换为整数。
slice()会提取到end之前(不包含end)。- 负数索引从缓冲区的末尾开始计数 — 如果
-buffer.length <= end < 0,则使用end + buffer.length。 - 如果
end < -buffer.length,则使用0。 - 如果
end >= buffer.length或省略了end或end为undefined,则使用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 }
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-sharedarraybuffer.prototype.slice |
浏览器兼容性
加载中…