Сводка
Свойство Array.prototype
представляет прототип для конструктора Array
.
Атрибуты свойстваArray.prototype |
|
---|---|
Записываемое | нет |
Перечисляемое | нет |
Настраиваемое | нет |
Описание
Экземпляры Array
наследуются от Array.prototype
. Как и с остальными конструкторами, вы можете изменять прототип конструктора объекта для применения изменений ко всем экземплярам класса Array
.
Небольшой факт: Array.prototype
сам является экземпляром Array
:
Array.isArray(Array.prototype); // true
Свойства
Array.prototype.constructor
- Определяет функцию, создающую прототип объекта.
Array.prototype.length
- Отражает количество элементов в массиве.
Методы
Методы изменения
Эти методы изменяют массив:
Array.prototype.copyWithin()
- Копирует последовательность элементов массива внутри массива.
Array.prototype.fill()
- Заполняет все элементы массива от начального индекса до конечного индекса указанным значением.
Array.prototype.pop()
- Удаляет последний элемент из массива и возвращает его.
Array.prototype.push()
- Добавляет один или более элементов в конец массива и возвращает новую длину массива.
Array.prototype.reverse()
- Переворачивает порядок элементов в массиве — первый элемент становится последним, а последний — первым.
Array.prototype.shift()
- Удаляет первый элемент из массива и возвращает его.
Array.prototype.sort()
- Сортирует элементы массива на месте и возвращает отсортированный массив.
Array.prototype.splice()
- Добавляет и/или удаляет элементы из массива.
Array.prototype.unshift()
- Добавляет один или более элементов в начало массива и возвращает новую длину массива.
Методы доступа
Эти методы не изменяют массив, а просто возвращают его в ином представлении.
Array.prototype.concat()
- Возвращает новый массив, состоящий из данного массива, соединённого с другим массивом и/или значением (списком массивов/значений).
Array.prototype.includes()
- Определяет, содержится ли в массиве указанный элемент, возвращая, соответственно,
true
илиfalse
. Array.prototype.join()
- Объединяет все элементы массива в строку.
Array.prototype.slice()
- Извлекает диапазон значений и возвращает его в виде нового массива.
Array.prototype.toSource()
- Возвращает литеральное представление указанного массива; вы можете использовать это значение для создания нового массива. Переопределяет метод
Object.prototype.toSource()
. Array.prototype.toString()
- Возвращает строковое представление массива и его элементов. Переопределяет метод
Object.prototype.toString()
. Array.prototype.toLocaleString()
- Возвращает локализованное строковое представление массива и его элементов. Переопределяет метод
Object.prototype.toLocaleString()
. Array.prototype.indexOf()
- Возвращает первый (наименьший) индекс элемента внутри массива, равный указанному значению; или -1, если значение не найдено.
Array.prototype.lastIndexOf()
- Возвращает последний (наибольший) индекс элемента внутри массива, равный указанному значению; или -1, если значение не найдено.
Методы обхода
Некоторые методы принимают в качестве аргументов функции, вызываемые при обработке массива. Когда вызываются эти методы, достаётся длина массива, и любой элемент, добавленный свыше этой длины изнутри функции обратного вызова не посещается. Другие изменения в массиве (установка значения или удаление элемента) могут повлиять на результаты операции, если изменённый элемент метод посещает после изменения. Хотя специфическое поведение этих методов в таких случаях хорошо определено, вы не должны на него полагаться, чтобы не запутывать других людей, читающих ваш код. Если вам нужно изменить массив, лучше вместо этого скопируйте его в новый массив.
Array.prototype.forEach()
- Вызывает функцию для каждого элемента в массиве.
Array.prototype.entries()
- Возвращает новый объект итератора массива
Array Iterator
, содержащий пары ключ / значение для каждого индекса в массиве. Array.prototype.every()
- Возвращает
true
, если каждый элемент в массиве удовлетворяет условию проверяющей функции. Array.prototype.some()
- Возвращает
true
, если хотя бы один элемент в массиве удовлетворяет условию проверяющей функции. Array.prototype.filter()
- Создаёт новый массив со всеми элементами этого массива, для которых функция фильтрации возвращает
true
. Array.prototype.find()
- Возвращает искомое значение в массиве, если элемент в массиве удовлетворяет условию проверяющей функции или
undefined
, если такое значение не найдено. Array.prototype.findIndex()
- Возвращает искомый индекс в массиве, если элемент в массиве удовлетворяет условию проверяющей функции или -1, если такое значение не найдено.
Array.prototype.keys()
- Возвращает новый итератор массива, содержащий ключи каждого индекса в массиве.
Array.prototype.map()
- Создаёт новый массив с результатами вызова указанной функции на каждом элементе данного массива.
Array.prototype.reduce()
- Применяет функцию к аккумулятору и каждому значению массива (слева-направо), сводя его к одному значению.
Array.prototype.reduceRight()
- Применяет функцию к аккумулятору и каждому значению массива (справа-налево), сводя его к одному значению.
Array.prototype.values()
- Возвращает новый объект итератора массива
Array Iterator
, содержащий значения для каждого индекса в массиве. Array.prototype[@@iterator]()
- Возвращает новый объект итератора массива
Array Iterator
, содержащий значения для каждого индекса в массиве.
Общие методы
Многие методы JavaScript-массива спроектированы таким образом, чтобы иметь возможность применяться ко всем объектам, «выглядящим похоже» на массивы. То есть, они могут использоваться на любом объекте, имеющим свойство length
и к элементам которого можно получить доступ через числовые имена свойств (как при индексации: array[5]
). TODO: предоставить примеры с Array.prototype.forEach.call и добавлением методов к объекту, как сделано для JavaArray
или String
. Некоторые методы, например join
, только читают свойство length
и числовые свойства объекта, на котором они вызываются. Другие, вроде reverse
требуют, чтобы числовые свойства и свойство length
объекта были изменяемыми; эти методы не могут вызываться на объектах вроде String
, которые не позволяют установку своего свойства length
или синтезирование числовых свойств.
Спецификации
Спецификация | Статус | Комментарий |
---|---|---|
ECMAScript 1-е издание. | Стандарт | Изначальное определение. |
ECMAScript 5.1 (ECMA-262) Определение 'Array.prototype' в этой спецификации. |
Стандарт | |
ECMAScript 6 (ECMA-262) Определение 'Array.prototype' в этой спецификации. |
Кандидат в рекомендации |
Совместимость с браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |