The Array.prototype
property represents the prototype for the Array
constructor and allows you to add new properties and methods to all Array
objects.
// If JavaScript doesn't provide a first() method natively, // add a new method returning the first element of an array. if (!Array.prototype.first) { Array.prototype.first = function() { return this[0]; } }
Description
Array
instances inherit from Array.prototype
. As with all constructors, you can change the constructor's prototype object to make changes to all Array
instances. For example, you can add new methods and properties to extend all Array
objects. This is used for polyfilling, for example.
Little known fact: Array.prototype
itself is an Array
:
Array.isArray(Array.prototype); // true
Property attributes of Array.prototype |
|
---|---|
Writable | no |
Enumerable | no |
Configurable | no |
Properties
Array.prototype.constructor
- Specifies the function that creates an object's prototype.
Array.prototype.length
- Reflects the number of elements in an array.
Array.prototype[@@unscopables]
- A symbol containing property names to exclude from a
with
binding scope.
Methods
Mutator methods
These methods modify the array:
Array.prototype.copyWithin()
- Copies a sequence of array elements within the array.
Array.prototype.fill()
- Fills all the elements of an array from a start index to an end index with a static value.
Array.prototype.pop()
- Removes the last element from an array and returns that element.
Array.prototype.push()
- Adds one or more elements to the end of an array and returns the new length of the array.
Array.prototype.reverse()
- Reverses the order of the elements of an array in place — the first becomes the last, and the last becomes the first.
Array.prototype.shift()
- Removes the first element from an array and returns that element.
Array.prototype.sort()
- Sorts the elements of an array in place and returns the array.
Array.prototype.splice()
- Adds and/or removes elements from an array.
Array.prototype.unshift()
- Adds one or more elements to the front of an array and returns the new length of the array.
Accessor methods
These methods do not modify the array and return some representation of the array.
Array.prototype.concat()
- Returns a new array comprised of this array joined with other array(s) and/or value(s).
Array.prototype.includes()
- Determines whether an array contains a certain element, returning
true
orfalse
as appropriate. Array.prototype.indexOf()
- Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found.
Array.prototype.join()
- Joins all elements of an array into a string.
Array.prototype.lastIndexOf()
- Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found.
Array.prototype.slice()
- Extracts a section of an array and returns a new array.
Array.prototype.toSource()
- Returns an array literal representing the specified array; you can use this value to create a new array. Overrides the
Object.prototype.toSource()
method. Array.prototype.toString()
- Returns a string representing the array and its elements. Overrides the
Object.prototype.toString()
method. Array.prototype.toLocaleString()
- Returns a localized string representing the array and its elements. Overrides the
Object.prototype.toLocaleString()
method.
Iteration methods
Several methods take as arguments functions to be called back while processing the array. When these methods are called, the length
of the array is sampled, and any element added beyond this length from within the callback is not visited. Other changes to the array (setting the value of or deleting an element) may affect the results of the operation if the method visits the changed element afterwards. While the specific behavior of these methods in such cases is well-defined, you should not rely upon it so as not to confuse others who might read your code. If you must mutate the array, copy into a new array instead.
Array.prototype.entries()
- Returns a new
Array Iterator
object that contains the key/value pairs for each index in the array. Array.prototype.every()
- Returns true if every element in this array satisfies the provided testing function.
Array.prototype.filter()
- Creates a new array with all of the elements of this array for which the provided filtering function returns true.
Array.prototype.find()
- Returns the found value in the array, if an element in the array satisfies the provided testing function or
undefined
if not found. Array.prototype.findIndex()
- Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found.
Array.prototype.forEach()
- Calls a function for each element in the array.
Array.prototype.keys()
- Returns a new
Array Iterator
that contains the keys for each index in the array. Array.prototype.map()
- Creates a new array with the results of calling a provided function on every element in this array.
Array.prototype.reduce()
- Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value.
Array.prototype.reduceRight()
- Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value.
Array.prototype.some()
- Returns true if at least one element in this array satisfies the provided testing function.
Array.prototype.values()
- Returns a new
Array Iterator
object that contains the values for each index in the array. Array.prototype[@@iterator]()
- Returns a new
Array Iterator
object that contains the values for each index in the array.
Generic methods (non-standard)
Many methods on the JavaScript Array object are designed to be generally applied to all objects which “look like” Arrays. That is, they can be used on any object which has a length
property, and which can usefully be accessed using numeric property names (as with array[5]
indexing). Some methods, such as join
, only read the length
and numeric properties of the object they are called on. Others, like reverse
, require that the object's numeric properties and length
be mutable; these methods can therefore not be called on objects like String
, which does not permit its length
property or synthesized numeric properties to be set.
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. |
ECMAScript 5.1 (ECMA-262) The definition of 'Array.prototype' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Array.prototype' in that specification. |
Standard | Added the copyWithin() , fill() , entries() , keys() , values() , find() , findIndex() methods. |
ECMAScript Latest Draft (ECMA-262) The definition of 'Array.prototype' in that specification. |
Draft | Added the includes() method. |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |