- •13. Вложенные функции. Работа с вложенными функциями
- •14. Объекты JavaScript. Понятие объекта. Виды объектов
- •15. Объект String(строка) , его свойства и методы Создание
- •Взятие подстроки: substr, substring, slice
- •Строчные буквы идут после заглавных, поэтому они всегда больше.
- •Ряд букв, например ё, находятся вне основного алфавита.
- •16. Объекты Math, Date, их свойства и методы
- •Функции общего назначения:
- •Создание
- •Возможные аргументы
- •17. Создание пользовательских объектов JavaScript. Добавление свойств и методов
- •Операции со свойствами объекта
- •Методы объекта
- •18. Dom. Понятие объектной модели документа. Методы поиска элементов на веб-странице
Взятие подстроки: substr, substring, slice
Метод substring(start, end) возвращает подстроку с позиции start до (но не включая) end.
var str = "stringify";
alert(str.substring(0,1)); // "s", символы с позиции 0 по 1 не включая 1.
Если аргумент end отсутствует, то идет до конца строки.
Первый аргумент substr(start [, length]) имеет такой же смысл, как и в substring, а второй содержит не конечную позицию, а количество символов.
var str = "stringify";
str = str.substr(2,4); // ring, со 2-й позиции 4 символа
alert(str)
Если второго аргумента нет – подразумевается «до конца строки».
slice(start [, end]) возвращает часть строки от позиции start до, но не включая позиции end. Смысл параметров – такой же, как в substring.
………………………………………………………….
ДОПОЛНИТЕЛЬНО
Различие между substring и slice – в том, как они работают с отрицательными и выходящими за границу строки аргументами:
substring(start, end)
Отрицательные аргументы интерпретируются как равные нулю. Слишком большие значения усекаются до длины строки:
alert( "testme".substring(-2) ); // "testme", -2 становится 0
Кроме того, если start > end, то аргументы меняются местами, т.е. возвращается участок строки между start и end:
alert( "testme".substring(4, -1) ); // "test"
// -1 становится 0 -> получили substring(4, 0)
// 4 > 0, так что аргументы меняются местами -> substring(0, 4) = "test"
slice
Отрицательные значения отсчитываются от конца строки:
alert( "testme".slice(-2) ); // "me", от 2 позиции с конца
alert( "testme".slice(1, -1) ); // "estm", от 1 позиции до первой с конца.
Это гораздо более удобно, чем странная логика substring.
Отрицательное значение первого параметра поддерживается в substr во всех браузерах, кроме IE8-.
Если выбирать из этих трёх методов один, для использования в большинстве ситуаций – то это будет slice: он и отрицательные аргументы поддерживает и работает наиболее очевидно.
Все строки имеют внутреннюю кодировку Юникод.
Неважно, на каком языке написана страница, находится ли она в windows-1251 или utf-8. Внутри JavaScript-интерпретатора все строки приводятся к единому «юникодному» виду. Каждому символу соответствует свой код.
Есть метод для получения символа по его коду:
String.fromCharCode(code)
Возвращает символ по коду code:
alert( String.fromCharCode(1072) ); // 'а'
…И метод для получения цифрового кода из символа:
str.charCodeAt(pos)
Возвращает код символа на позиции pos. Отсчет позиции начинается с нуля.
alert( "абрикос".charCodeAt(0) ); // 1072, код 'а'
Почему сравнения 'ё' > 'я' и 'а' > 'Я' дают такой странный результат?
Дело в том, что символы сравниваются не по алфавиту, а по коду. У кого код больше – тот и больше. В юникоде есть много разных символов. Кириллическим буквам соответствует только небольшая часть из них, подробнее – Кириллица в Юникоде.
Выведем отрезок символов юникода с кодами от 1034 до 1113:
var str = '';
for (var i = 1034; i <= 1113; i++) {
str += String.fromCharCode(i);
}
alert( str );
Результат:
ЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљ
Мы можем увидеть из этого отрезка две важных вещи:
