Строки как массивы

В ECMAScript 5 (и во многих последних версиях броузеров, включая IE8, появившихся до выхода стандарта ECMAScript 5) строки своим поведением напоминают массивы, доступные только для чтения. Вместо метода charAt() для обращения к отдельным символам можно использовать квадратные скобки:

var s = test;

s.charAt(0) // => "t"
s[1] // => "e"

Оператор typeof для строк все так же возвращает «string», а если строку передать методу Array.isArray(), он вернет false.

Основное преимущество, которое дает поддержка индексирования строк, – это возможность заменить вызов метода charAt() квадратными скобками и получить более краткий, удобочитаемый и, возможно, более эффективный программный код. Однако тот факт, что строки своим поведением напоминают массивы, означает также, что к ним могут применяться универсальные методы массивов.

Например:

s = "Ja­va­Script"

Array.prototype.join.call(s, " ") // => "J a v a S c r i p t"

Array.prototype.filter.call(s, // Фильт­ро­вать сим­во­лы стро­ки
 function(x) {
   return x.match(/[^aeiou]/); // Сов­па­де­ние толь­ко с со­глас­ны­ми
 }).join("")

Имейте в виду, что строки являются неизменяемыми значениями, поэтому при работе с ними как с массивами их следует интерпретировать как массивы, доступные только для чтения.

Такие методы массивов, как push(), sort(), reverse() и splice(), изменяют исходный массив и не будут работать со строками. Однако попытка изменить строку с помощью метода массива не вызовет ошибку: строка просто не изменится.


<<< back

results matching ""

    No results matching ""