SharedArrayBuffer.prototype.slice()

Baseline 已廣泛支援

此功能已成熟,可在多種裝置和瀏覽器版本上使用。自 2021 年 12 月以來,它已在所有瀏覽器中可用。

slice() 方法用於 SharedArrayBuffer 例項,它會返回一個新的 SharedArrayBuffer,其內容是當前 SharedArrayBuffer 中從 start(包含)到 end(不包含)的位元組的副本。如果 startend 是負數,它會從陣列的末尾開始計算索引,而不是從開頭。

試一試

// 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 或省略了 endendundefined,則使用 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

瀏覽器相容性

另見