new ArrayBuffer()【コンストラクタ】
isView()【ビュー判定】
slice()【部分コピー】

new ArrayBuffer()【コンストラクタ】

メモ

構文

new ArrayBuffer( length )

戻り値ArrayBuffer【バイナリデータ配列】
lengthサイズ (バイト単位)
例外
TypeError 例外:new なしで呼び出し
RangeError 例外:length が 0 未満
RangeError 例外:確保不可

const buff = new ArrayBuffer(8);
const typedArray = new Int32Array(buff)
console.log(typedArray);
// 出力:Int32Array(2) [0, 0]
console.log(typedArray.byteLength);
// 出力:8
console.log(typedArray.length);
// 出力:2

ArrayBuffer.isView()【ビュー判定】

メモ

構文

ArrayBuffer.isView( arg ) 

戻り値判定結果
true:ビュー
false:その他
arg判定するビュー

const buff = new ArrayBuffer(8);
console.log(ArrayBuffer.isView(buff));
// 出力:false
const typedArray = new Int32Array(buff)
console.log(ArrayBuffer.isView(typedArray));
// 出力:true

ArrayBuffer.prototype.slice()【部分コピー】

メモ

  • 部分コピーして新規に ArrayBuffer を作成
    • 開始要素位置を0、終了要素位置を省略すれば全体コピー
  • 外部リンク (英語)
    ArrayBuffer.prototype.slice ( start, end )
    ES2019 (10) ES2018 (9) ES2017 (8) ES2016 (7) ES2015 (6) ES5.1

構文

arrayBuffer.slice( start[, end] )

戻り値コピーされた新規の ArrayBuffer (endstart の場合、サイズは 0)
start開始要素位置 (詳細は下記参照)
end終了要素位置 (この位置の要素は含まない / 詳細は下記参照)
start説明
0 ≦先頭からの要素位置 (要素数 <:要素数)
< 0末尾からの要素位置 (-1:末尾)
end説明
省略末尾まで (要素数:末尾+1)
0 ≦先頭からの要素位置 (要素数 <:要素数)
< 0末尾からの要素位置 (-1:末尾)

const buff1 = new ArrayBuffer(20);
const typedArray1 = new Int32Array(buff1)
for (let i = 0; i < typedArray1.length; i++) {
  typedArray1[i] = i;
}
console.log(typedArray1);         // 出力:Int32Array(5) [0, 1, 2, 3, 4]
console.log(typedArray1.length);  // 出力:5
console.log(buff1.byteLength);    // 出力:20

const buff2 = buff1.slice(4, 16);
const typedArray2 = new Int32Array(buff2)
console.log(typedArray2);         // 出力:Int32Array(3) [1, 2, 3]
console.log(typedArray2.length);  // 出力:3
console.log(buff2.byteLength);    // 出力:12

for (let i = 0; i < typedArray2.length; i++) {
  typedArray2[i] += 10;
}
console.log(typedArray1);  // 出力:Int32Array(5) [0, 1, 2, 3, 4]
console.log(typedArray2);  // 出力:Int32Array(3) [11, 12, 13]