title: Strange limitation in ArrayBufferView constructor
body: <p>The <a href="http://www.khronos.org/registry/typedarray/specs/latest/#7" rel="nofollow">TypedArray specification</a> states that an ArrayBufferView may be created this way: </p>
  
  <pre><code>TypedArray(ArrayBuffer buffer, 
             optional unsigned long byteOffset, optional unsigned long length)
  </code></pre>
  
  <p>However, the second parameter, <code>byteOffset</code>, has a limitation:</p>
  
  <blockquote>
    <p>The given byteOffset must be a multiple of the element size of the
    specific type, otherwise an exception is raised.</p>
  </blockquote>
  
  <p>This means we cannot work with odd offsets for two-byte views, such as:</p>
  
  <pre><code>var view1  = new Uint8Array([0, 1, 2, 3]),
      view2 = new Uint16Array(view1.buffer, 1, 1);
  </code></pre>
  
  <p>So, even though [1,2] could be correctly converted into Uint16, I can't access those elements that way.
  The byteOffset limitation seems to significantly decrease <code>ArrayBufferView</code>'s flexibility.</p>
  
  <p>Does anybody know why this limitation was imposed?</p>