ArrayBuffer

ArrayBuffer é um objeto utilizado para representar um buffer de dados em binário de tamanho pré-definido. Não é possivel manipular o conteudo do buffer diretamente; em vez disso, tem de se criar um dos typed array objects ou um objeto DataView que representa um buffer num formato especifico, e usa-o para ler e escrever  o conteudo do buffer. 
 

Sintaxe

new ArrayBuffer(length)

Parametros

length
O tamanho, em bytes, do array buffer que se pretende criar.

Retorno

 Um novo objecto do tipo ArrayBuffer do tamanho especificado. O respetivo conteudo é inicializado a 0.

Excepções

A RangeError é lançada caso o tamanho (length) é maior do que Number.MAX_SAFE_INTEGER (en-US) (>= 2 ** 53) ou caso seja negativo.

Descrição

O construtor de ArrayBuffer cria um novo objeto do tipo ArrayBuffer com o tamanho especificado em bytes.

Obter um array buffer a partir de dados existentes

Propriedades

ArrayBuffer.length
Propriedade length do construtor de  ArrayBuffer cujo valor é 1.
get ArrayBuffer[@@species] (en-US)
A função do contrutor que é usado para criar objetos derivados.
ArrayBuffer.prototype (en-US)
Permite adicionar novas propriedades a todos os objetos do tipo ArrayBuffer.

Métodos

ArrayBuffer.isView(arg) (en-US)
Devolve true caso arg Ã©  um tipo de representação do ArrayBuffer, como typed array objects ou DataView. Devolve false caso contrário
ArrayBuffer.transfer(oldBuffer [, newByteLength]) This is an experimental API that should not be used in production code.
Devolve um novo objeto ArrayBuffer cujo conteúdo é obtido do oldBuffer e ou é truncado ou preenchido a zeros pelo  newByteLength.

Instâncias ArrayBuffer

Todas as instâncias de ArrayBuffer herdam de ArrayBuffer.prototype (en-US).

Propriedades

{{page('en-US/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Properties')}}

Métodos

{{page('en-US/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Methods')}}

ArrayBuffer.slice() (en-US) This API has not been standardized.
Tem a mesma funcionalidade que ArrayBuffer.prototype.slice() (en-US).

Exemplo

Neste exemplo, criamos um buffer de 8 bytes com representação Int32Array (en-US) a referênciar o buffer:

var buffer = new ArrayBuffer(8);
var view   = new Int32Array(buffer);

Especificação

Especificação Status Comentário
Typed Array Specification Obsolete Substituido por ECMAScript 6.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'ArrayBuffer' in that specification.
Standard

Definição inicial no stardard da ECMA. Especificar que new era necessário.

ECMAScript (ECMA-262)
The definition of 'ArrayBuffer' in that specification.
Living Standard  

Compatibilidade nos navegadores

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 7.0 4.0 (2) 10 11.6 5.1
ArrayBuffer() without new throws ? 44 (44) ? ? ?
ArrayBuffer.slice() This API has not been standardized. No support (Yes)
No support 53 (53)
No support No support ?
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 4.0 (Yes) 4.0 (2) 10 11.6 4.2
ArrayBuffer() without new throws ? ? 44.0 (44) ? ? ?
ArrayBuffer.slice() This API has not been standardized. No support No support (Yes)
No support 53.0 (53)
No support No support ?

Notas de compatibilidade

Com ECMAScript 2015, construtores de ArrayBuffer são obrigados a usar o operador new (en-US). Daqui adiante ao invocar ArrayBuffer como uma função sem new irá lançar uma exceção TypeError.

var dv = ArrayBuffer(10);
// TypeError: calling a builtin ArrayBuffer constructor
// without new is forbidden
var dv = new ArrayBuffer(10);

Ver também