[47] 型付き配列は、 バイナリーデータ (バイト列) を配列と似た API で扱うことができる JavaScript のクラス群です。
[41] ArrayBufferView
とは、型付き配列型または
DataView
をいいます >>39, >>30。
[31] ArrayBufferView
は、 BufferSource
にも含まれています。
[71] 型付き配列は、 TypedArrayName を持ちます。
値は種別 (Int8Array
など) を表しています。
JavaScript の仕様書上のオブジェクトの取り扱いにおいては、
この内部スロットの有無で型付き配列かどうかを判別しています。
[72] ArrayBufferView
は、 ViewedArrayBuffer を持ちます。
値は ArrayBuffer
です。
構造化クローンや Streams Standard のオブジェクトの取り扱いにおいては、
この内部スロットの有無で ArrayBufferView
かどうかを判別しています。
[74] ArrayBufferView
は、
ByteOffset と ByteLength を持ちます。それぞれ、
ViewedArrayBuffer のバイト列におけるオフセットと長さを表しています。
本 ArrayBufferView
は、バッファー上の該当範囲を表しています。
[75] 型付き配列は、 ArrayLength を持ちます。配列としての長さ (要素数) を表しています。各要素のバイト長が1バイトとは限らないので、 ByteLength とは一致するとは限りません。
[76]
ArrayBufferView
の各クラスのインスタンスは、
コンストラクターにより作成することができます。
ArrayBuffer
/SharedArrayBuffer
を指定した場合は、それが ViewedArrayBuffer に設定されます。
それ以外の場合、新しい ArrayBuffer
が作成されます。
[40] 型付き配列の
subarray
,
slice
,
filter
,
map
各メソッドは新しい型付き配列のインスタンスを作成します。
subarray
は同じ ArrayBuffer
/SharedArrayBuffer
を共有することになりますが、それ以外は新しい ArrayBuffer
を作成します。
[77]
ArrayBufferView
の各クラスのインスタンスは、
ReadableByteStreamController
により (入力と同じクラスのものが)
作成される場合があります。
[78] Uint8Array
のインスタンスは、
ReadableByteStreamController
により作成される場合があります。
[79]
Uint8ClampedArray
のインスタンスは、
ImageData
オブジェクトの data
IDL属性から得られます。
[81]
fetch の処理も ArrayBuffer
や
Uint8Array
を内部的に作成することがあります。
[83] TypedArray が等しいかどうかの比較は、 組み込みの方法はなく、 自分で実装するほかないようです。
[84] ArrayBuffer
から TypedArray を得るには、
TypedArray のコンストラクターを使うといいです。
typedArray = new Uint8Array (arrayBuffer);
[85] TypedArray から Array
を得るには、
Array.from
を使うといいです。
array = Array.from (typedArray);
[86] JavaScript には長らくバイト列専用のデータ型がありませんでしたが、 バイト列を表す需要がないわけではありませんでした。 慣用句的な表現方法がいくつかありました。
CanvasPixelArray
[52] Web Applications 1.0 は canvas
の getImageData
と共に
CanvasPixelArray
を規定しました。
[21] ECMAScript Typed Array Specification ははじめ Khronos で標準化されました。
[23] canvas
要素の CanvasPixelArray
は、2011年に Uint8ClampedArray
に変更されています。
[22] その後 TypedArray は ES6 に取り込まれました。
[53] Web IDL でも型付き配列型その他を扱うためのデータ型が追加されました。
[38] >>37 でバッファー源型が導入されました。また HTML Standard
にあった ArrayBufferView
の定義が Web IDL に含まれるようになりました。
旧 ArrayBufferData
は BufferSource
に改称されました。
[46] W3C bug 27110. Fix the typo in the BufferSource typedef. · 74480d0 · heycam/webidl ( ( 版)) https://github.com/heycam/webidl/commit/74480d06c359ca407691818f1963f208d60434ea
[55] Update ECMAScript and IDL integration · whatwg/html@52f96c4 ( 版) https://github.com/whatwg/html/commit/52f96c455a53763a7fe00162c067da6adb20e62c
[56] Fix #26: allocating an ArrayBuffer can fail · whatwg/xhr@6484330 ( 版) https://github.com/whatwg/xhr/commit/6484330ec70ba66b9ee3a6b7244227180c0b4dce
[57] Write structured clone algorithm in terms of ECMAScript · whatwg/html@bfb960c ( 版) https://github.com/whatwg/html/commit/bfb960c938580c95e77365e614218b952f96375b
[58] Handle an ArrayBuffer allocation failure · whatwg/fetch@3004ebc ( 版) https://github.com/whatwg/fetch/commit/3004ebc878c9baf55cb22b32f66b8c5805824a70
[59] Use BufferSource instead of ArrayBuffer or ArrayBufferView. (mkruisselbrink著, ) https://github.com/w3c/FileAPI/commit/3eaebc7f1aea2a3c345d40401a3bed464414f63b
[60] 24072 – Clarify handling of neutered objects () https://www.w3.org/Bugs/Public/show_bug.cgi?id=24072
[61] Merge algo and dfn for "detaching an ArrayBuffer" (#210) (tobie著, ) https://github.com/heycam/webidl/commit/9d054100b8d599a31a549d664b9dcb780b3d638c
[62] Only fail to allocate an ArrayBuffer once (annevk著, ) https://github.com/whatwg/xhr/commit/33e1e973af1ba0dc640699e2a3a3175a3a3cfd05
[63] Breaking: refactor structured clone into serialize/deserialize (domenic著, ) https://github.com/whatwg/html/commit/97d644c97335956610a31e8ad98d1a388c063e84
[64] Breaking: refactor structured clone into serialize/deserialize (domenic著, ) https://github.com/whatwg/html/commit/97d644c97335956610a31e8ad98d1a388c063e84
[65] Add [AllowShared] to allow accepting SharedArrayBuffers (domenic著, ) https://github.com/heycam/webidl/commit/c59bdcbcf2039c89eb7ea9a35e1e2dba621519ec
[66] Throwing when converting detached ArrayBuffers is not what browsers do · Issue #352 · heycam/webidl () https://github.com/heycam/webidl/issues/352
[67] Replace TypedArray spec and IDL links with links to ECMAScript spec · Issue #2203 · KhronosGroup/WebGL () https://github.com/KhronosGroup/WebGL/issues/2203
[48] Uint8ClampedArray does not have a [[Detached]] internal slot (annevk著, ) https://github.com/whatwg/html/commit/29d83435dac041e56f0f4d7076edfd6f2afadd4b
[68] [[ViewedArrayBuffer]] cannot be undefined during usage (annevk著, ) https://github.com/heycam/webidl/commit/2084c30eb54c9c1dd6662e56345a5f17797653e5
[70] [[ViewedArrayBuffer]] cannot be undefined during usage (annevk著, ) https://github.com/heycam/webidl/commit/2084c30eb54c9c1dd6662e56345a5f17797653e5
[80] "get a copy of the bytes held by the buffer source" should not fail for detached buffers · Issue #151 · heycam/webidl () https://github.com/heycam/webidl/issues/151
[82] [[ViewedArrayBuffer]] cannot be undefined during usage by annevk · Pull Request #604 · heycam/webidl () https://github.com/heycam/webidl/pull/604
ArrayBuffer
ではなく、SharedArrayBuffer
の場合もあります。