TypedArray 仕様では、ArrayBufferView は次の方法で作成できると規定されています。
TypedArray(ArrayBuffer buffer,
optional unsigned long byteOffset, optional unsigned long length)
ただし、2 番目のパラメーター にbyteOffset
は制限があります。
指定された byteOffset は、特定の型の要素サイズの倍数である必要があります。そうでない場合、例外が発生します。
これは、次のような 2 バイト ビューの奇数オフセットを扱うことができないことを意味します。
var view1 = new Uint8Array([0, 1, 2, 3]),
view2 = new Uint16Array(view1.buffer, 1, 1);
したがって、[1,2] を Uint16 に正しく変換できたとしても、その方法でそれらの要素にアクセスすることはできません。byteOffset の制限により、ArrayBufferView
の柔軟性が大幅に低下するようです。
この制限が課された理由を知っている人はいますか?