TypedArray规范指出,可以通过以下方式创建一个ArrayBufferView:
TypedArray(ArrayBuffer buffer,
optional unsigned long byteOffset, optional unsigned long length)
然而,第二个参数
byteOffset
有一个限制:
给定的
byteOffset
必须是特定类型元素大小的倍数,否则将引发异常。
这意味着我们不能在两个字节视图中使用奇数偏移量,例如:
var view1 = new Uint8Array([0, 1, 2, 3]),
view2 = new Uint16Array(view1.buffer, 1, 1);
因此,即使[1,2]可以正确转换为Uint16,我也无法以这种方式访问这些元素。byteOffset限制似乎显著降低了ArrayBufferView的灵活性。
有人知道为什么要实施这种限制吗?