A TypedArray object describes an array-like view of an underlying binary data buffer. There is no global property named TypedArray, nor is there a directly visible TypedArray constructor. Instead, there are a number of different global properties, whose values are typed array constructors for specific element types, listed below. On the following pages you will find common properties and methods that can be used with any typed array containing elements of any type.
new TypedArray(length); new TypedArray(typedArray); new TypedArray(object); new TypedArray(buffer [, byteOffset [, length]]); where TypedArray() is one of: Int8Array(); Uint8Array(); Uint8ClampedArray(); Int16Array(); Uint16Array(); Int32Array(); Uint32Array(); Float32Array(); Float64Array();
length argument, an internal array buffer is created in memory of size length multiplied by BYTES_PER_ELEMENT bytes containing 0 value.typedArray argument, which can be an object of any of the typed array types (such as Int32Array), the typedArray gets copied into a new typed array. Each value in typedArray is converted to the corresponding type of the constructor before being copied into the new array. Then length of the new typedArray object will be same of length of the typedArray argument.object argument, a new typed array is created as if by the TypedArray.from() method.buffer, and optionally a byteOffset and a length argument, a new typed array view is created that views the specified ArrayBuffer. The byteOffset and length parameters specify the memory range that will be exposed by the typed array view. If both are omitted, all of buffer is viewed; if only length is omitted, the remainder of buffer is viewed.ECMAScript 2015 defines a TypedArray constructor that serves as the [[Prototype]] of all TypedArray constructors. This constructor is not directly exposed: there is no global %TypedArray% or TypedArray property. It is only directly accessible through Object.getPrototypeOf(Int8Array) and similar. All TypedArrays constructors inherit common properties from the %TypedArray% constructor function. Additionally, all typed array prototypes (TypedArray.prototype) have %TypedArray%.prototype as their [[Prototype]].
The %TypedArray% constructor on its own is not particularly useful. Calling it or using it in a new expression will throw a TypeError, except when used during object creation in JS engines that support subclassing. There are at present no such engines, so %TypedArray% is only useful to polyfill functions or properties onto all TypedArray constructors.
When creating a TypedArray instance (i.e. instance of Int8Array or similar), an array buffer is created internally (if ArrayBuffer object is present as constructor argument then this array buffer is used) in memory and this buffer address is saved as internal property of that instances, and all the methods of %TypedArray%.prototype uses that array buffer address to operate on i.e. set value and get value etc.
You can reference elements in the array using standard array index syntax (that is, using bracket notation). However, getting or setting indexed properties on typed arrays will not search in the prototype chain for this property, even when the indices are out of bound. Indexed properties will consult the ArrayBuffer and will never look at object properties. You can still use named properties, just like with all objects.
// Setting and getting using standard array syntax var int16 = new Int16Array(2); int16[0] = 42; console.log(int16[0]); // 42 // Indexed properties on prototypes are not consulted (Fx 25) Int8Array.prototype[20] = 'foo'; (new Int8Array(32))[20]; // 0 // even when out of bound Int8Array.prototype[20] = 'foo'; (new Int8Array(8))[20]; // undefined // or with negative integers Int8Array.prototype[-1] = 'foo'; (new Int8Array(8))[-1]; // undefined // Named properties are allowed, though (Fx 30) Int8Array.prototype.foo = 'bar'; (new Int8Array(32)).foo; // "bar"
| Type | Size in bytes | Description | Web IDL type | Equivalent C type |
|---|---|---|---|---|
Int8Array | 1 | 8-bit two's complement signed integer | byte | int8_t |
Uint8Array | 1 | 8-bit unsigned integer | octet | uint8_t |
Uint8ClampedArray | 1 | 8-bit unsigned integer (clamped) | octet | uint8_t |
Int16Array | 2 | 16-bit two's complement signed integer | short | int16_t |
Uint16Array | 2 | 16-bit unsigned integer | unsigned short | uint16_t |
Int32Array | 4 | 32-bit two's complement signed integer | long | int32_t |
Uint32Array | 4 | 32-bit unsigned integer | unsigned long | uint32_t |
Float32Array | 4 | 32-bit IEEE floating point number | unrestricted float | float |
Float64Array | 8 | 64-bit IEEE floating point number | unrestricted double | double |
TypedArray.BYTES_PER_ELEMENTTypedArray.nameget TypedArray[@@species]TypedArray.prototypeTypedArray.from()Array.from().TypedArray.of()Array.of().All TypedArrays inherit from TypedArray.prototype.
TypedArray.prototype.constructorTypedArray.prototype.buffer Read only
ArrayBuffer referenced by the typed array. Fixed at construction time and thus read only.TypedArray.prototype.byteLength Read only
ArrayBuffer. Fixed at construction time and thus read only.
TypedArray.prototype.byteOffset Read only
ArrayBuffer. Fixed at construction time and thus read only.
TypedArray.prototype.length Read only
TypedArray.prototype.copyWithin()Array.prototype.copyWithin().TypedArray.prototype.entries()Array Iterator object that contains the key/value pairs for each index in the array. See also Array.prototype.entries().TypedArray.prototype.every()Array.prototype.every().TypedArray.prototype.fill()Array.prototype.fill().TypedArray.prototype.filter()Array.prototype.filter().TypedArray.prototype.find()undefined if not found. See also Array.prototype.find().TypedArray.prototype.findIndex()Array.prototype.findIndex().TypedArray.prototype.forEach()Array.prototype.forEach().TypedArray.prototype.includes()
true or false as appropriate. See also Array.prototype.includes().TypedArray.prototype.indexOf()Array.prototype.indexOf().TypedArray.prototype.join()Array.prototype.join().TypedArray.prototype.keys()Array Iterator that contains the keys for each index in the array. See also Array.prototype.keys().TypedArray.prototype.lastIndexOf()Array.prototype.lastIndexOf().TypedArray.prototype.map()Array.prototype.map().TypedArray.prototype.move() Unimplemented
TypedArray.prototype.copyWithin().TypedArray.prototype.reduce()Array.prototype.reduce().TypedArray.prototype.reduceRight()Array.prototype.reduceRight().TypedArray.prototype.reverse()Array.prototype.reverse().TypedArray.prototype.set()TypedArray.prototype.slice()Array.prototype.slice().TypedArray.prototype.some()Array.prototype.some().TypedArray.prototype.sort()Array.prototype.sort().TypedArray.prototype.subarray()TypedArray.prototype.values()Array Iterator object that contains the values for each index in the array. See also Array.prototype.values().TypedArray.prototype.toLocaleString()Array.prototype.toLocaleString().TypedArray.prototype.toString()Array.prototype.toString().TypedArray.prototype[@@iterator]()Array Iterator object that contains the values for each index in the array.| Specification | Status | Comment |
|---|---|---|
| Typed Array Specification | Obsolete | Defined as TypedArray and ArrayBufferView interface with typed array view types. Superseded by ECMAScript 2015. |
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'TypedArray Objects' in that specification. | Standard | Initial definition in an ECMA standard. Specified behaviour for indexed and named properties. Specified that new is required. |
| ECMAScript 2017 Draft (ECMA-262) The definition of 'TypedArray Objects' in that specification. | Draft |
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | 7.0 | 4.0 (2) | 10 | 11.6 | 5.1 |
| Indexed properties not consulting prototype | (Yes) [1] | 25 (25) | ? | ? | ? |
| Named properties | (Yes) | 30 (30) | ? | ? | ? |
new is required | ? | 44 (44) | ? | ? | ? |
| Iterable in constructor | ? | 52 (52) | ? | ? | ? |
| Feature | Android | Android Webview | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|
| Basic support | 4.0 | (Yes) | 4.0 (2) | 10 | 11.6 | 4.2 | (Yes) |
| Indexed properties not consulting prototype | ? | (Yes) [1] | 25.0 (25) | ? | ? | ? | (Yes) [1] |
| Named properties | ? | (Yes) | 30.0 (30) | ? | ? | ? | ? |
new is required | ? | ? | 44.0 (44) | ? | ? | ? | ? |
| Iterable in constructor | ? | ? | 52.0 (52) | ? | ? | ? | ? |
[1] -1 and similar are not considered as indexed properties and therefore return the value of the prototype property.
Starting with ECMAScript 2015, TypedArray constructors require to be constructed with a new operator. Calling a TypedArray constructor as a function without new, will throw a TypeError from now on.
var dv = Int8Array([1, 2, 3]); // TypeError: calling a builtin Int8Array constructor // without new is forbidden
var dv = new Int8Array([1, 2, 3]);
© 2005–2017 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray