The ArrayBuffer object is used to represent a generic, fixed-length raw binary data buffer. You cannot directly manipulate the contents of an ArrayBuffer; instead, you create one of the typed array objects or a DataView object which represents the buffer in a specific format, and use that to read and write the contents of the buffer.
Syntax
new ArrayBuffer(length)
Parameters
- length
- The size, in bytes, of the array buffer to create.
Return value
A new ArrayBuffer object of the specified size. Its contents are initialized to 0.
Exceptions
A RangeError is thrown if the length is larger than Number.MAX_SAFE_INTEGER (>= 2 ** 53) or negative.
Description
The ArrayBuffer constructor creates a new ArrayBuffer of the given length in bytes.
Getting an array buffer from existing data
Properties
- ArrayBuffer.length
- The ArrayBufferconstructor's length property whose value is 1.
- get ArrayBuffer[@@species]
- The constructor function that is used to create derived objects.
- ArrayBuffer.prototype
- Allows the addition of properties to all ArrayBufferobjects.
Methods
- ArrayBuffer.isView(arg)
- Returns trueifargis one of the ArrayBuffer views, such as typed array objects or aDataView. Returnsfalseotherwise.
- ArrayBuffer.transfer(oldBuffer [, newByteLength])
- 
 Returns a newArrayBufferwhose contents are taken from theoldBuffer's data and then is either truncated or zero-extended bynewByteLength.
ArrayBuffer instances
All ArrayBuffer instances inherit from ArrayBuffer.prototype.
Properties
- ArrayBuffer.prototype.constructor
- Specifies the function that creates an object's prototype. The initial value is the standard built-in ArrayBufferconstructor.
- ArrayBuffer.prototype.byteLengthRead only
- The size, in bytes, of the array. This is established when the array is constructed and cannot be changed. Read only.
Methods
- ArrayBuffer.prototype.slice()
- Returns a new ArrayBufferwhose contents are a copy of thisArrayBuffer's bytes frombegin, inclusive, up toend, exclusive. If eitherbeginorendis negative, it refers to an index from the end of the array, as opposed to from the beginning.
- ArrayBuffer.slice()
- Has the same functionality as ArrayBuffer.prototype.slice().
Example
In this example, we create a 8-byte buffer with a Int32Array view referring to the buffer:
var buffer = new ArrayBuffer(8); var view = new Int32Array(buffer);
Specifications
| Specification | Status | Comment | 
|---|---|---|
| Typed Array Specification | Obsolete | Superseded by ECMAScript 6. | 
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'ArrayBuffer' in that specification. | Standard | Initial definition in an ECMA standard. Specified that newis required. | 
| ECMAScript Latest Draft (ECMA-262) The definition of 'ArrayBuffer' in that specification. | Draft | 
Browser compatibility
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari | 
|---|---|---|---|---|---|---|
| Basic support | 7.0 | (Yes) | 4.0 (2) | 10 | 11.6 | 5.1 | 
| ArrayBuffer()withoutnewthrows | ? | ? | 44 (44) | ? | ? | ? | 
| ArrayBuffer.slice() | No support | (Yes) | (Yes) No support 53 (53) | No support | No support | ? | 
| Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | 
|---|---|---|---|---|---|---|---|
| Basic support | 4.0 | (Yes) | (Yes) | 4.0 (2) | 10 | 11.6 | 4.2 | 
| ArrayBuffer()withoutnewthrows | ? | ? | ? | 44.0 (44) | ? | ? | ? | 
| ArrayBuffer.slice() | No support | No support | (Yes) | (Yes) No support 53.0 (53) | No support | No support | ? | 
Compatibility notes
Starting with ECMAScript 2015, ArrayBuffer constructors require to be constructed with a new operator. Calling an ArrayBuffer constructor as a function without new, will throw a TypeError from now on.
var dv = ArrayBuffer(10); // TypeError: calling a builtin ArrayBuffer constructor // without new is forbidden
var dv = new ArrayBuffer(10);