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

new ArrayBuffer【コンストラクタ】

メモ

概要

  • バイナリデータ配列を生成
    • 配列は 0 クリア

外部リンク

構文

new ArrayBuffer( length )

ArrayBuffer【バイナリデータ配列】
lengthサイズ (バイト単位)

TypeError new なしで呼び出し
RangeError 
length が 0 未満
確保不可

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.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]