В JavaScript 1.6 реализованы несколько новых возможностей: поддержка E4X, несколько новых методов Array
, и generic-методы Array и String. JavaScript 1.6 поддерживается начиная с Firefox 1.5.
E4X
ECMAScript for XML (E4X) — это мощная технология для создания и обработки XML-данных из JavaScript кода. Возможность работать с DOM объектами посредством E4X будет реализована в следующих версиях, однако разработчики, пишущие веб-приложения c использованием XML, могут извлечь выгоду из уже реализованной функциональности.
Работая с E4X, Вы всё ещё можете использовать стандартные типы MIME:
<script type="text/javascript">
Однако, синтаксис E4X может конфликтовать с обычной практикой помещения скриптов в HTML-комментарии (<!--...-->
) чтобы скрыть их от старых браузеров. E4X так же может конфликтовать с новомодной практикой вставки скриптов в секции CDATA (<![CDATA[...]]>
), чтобы обеспечить поддержку символов «<» и «>» в скриптах (заметьте, что это не относится к HTML). Если Вы видите необъяснимые ошибки, просто добавьте, «; e4x=1» к описанию MIME типа:
<script type="text/javascript; e4x=1">
Заметьте, что скрипты в расширениях всегда трактуют комментарии HTML как литералы E4X. Так что, «; e4x=1» подразумевается.
Дополнения Array
У объектов Array
появилось семь новых методов, которые можно разделить на две группы — методы поиска элемента и итеративные методы. Методы поиска элемента это:
indexOf()
— возвращает номер первого вхождения переданного элемента.lastIndexOf()
— возвращает номер последнего вхождения переданного элемента.
Итеративные методы:
every()
— запускает заданную функцию с каждым элементом массива и возвращает значениеtrue
, если функция вернула значениеtrue
для каждого элемена.filter()
— запускает заданную функцию с каждым элементом массива и возвращает массив всех элементов, для которых функция вернула значениеtrue
.forEach()
— запускает заданную функцию для каждого элемента массива.map()
— запускает заданную функцию для каждого элемента массива и возвращает массив, состоящий из значений, возвращенных из функции.some()
— запускает заданную функцию для каждого элемента массива и возвращает значениеtrue
, если функция вернула значениеtrue
хотя бы для одного из элементов.
Дополнительную информацию по этой теме можно получить из статьи Николаса C. Закаса (Nicholas C. Zakas) «Mozilla's New Array Methods».
Обобщенные методы Array и String
Иногда бывает удобно применить методы Array
к строкам, трактуя строку, как массив символов. Например, для проверки, что все элементы строки str — латинские строчные буквы, можно использовать такой код:
function isLetter(character) { return (character >= "a" && character <= "z"); } if (Array.prototype.every.call(str, isLetter)) alert("The string '" + str + "' contains only letters!");
Конструкция Array.prototype.every.call
длинная и не слишком удобная. В JavaScript 1.6 введен упрощенный способ использования методов Array
, полезных не только для массивов:
if (Array.every(str, isLetter)) alert("The string '" + str + "' contains only letters!");
Аналогично, можно применять методы String
к любому объекту:
var num = 15; alert(String.replace(num, /5/, '2'));
См. также
- Новое в JavaScript 1.7 — новые возможности JavaScript, введённые в Firefox 2.