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
的灵活性。
有人知道为什么要施加这种限制吗?