|
Аннотация для списка: Объект для булевых значений
Введение: В яваскрипт есть как Boolean -объекты, так и примитивные Boolean значения.
Не смешивайте их. Объект - это объект. В частности, яваскрипт любой объект считает "true", например при неявном приведении типа в операторе if :
x = new Boolean(false);
if (x) {
// . . . этот код будет выполнен
}
Оператор if приводит аргумент к примитивному значению, поэтому new Boolean(false) был приведен к true , т.к является объектом.
Не используйте объект Boolean для преобразования к булевому значению. Вместо этого, используйте Boolean как функцию.
x = Boolean(expression); // предпочтительно
x = new Boolean(expression); // не используйте
Или можно проще, с использованием двойного отрицания:
x = !!expression
В современном яваскрипт-программировании new Boolean не используется.
Аргументы:
- value
- исходное значение для булевого объекта
Описание конструктора, примеры создания: Значение, переданное в качестве параметра, при необходимости, приводится к булевому виду. Если аргумент не указан или равен:
- 0,
- -0,
- null,
- false,
- NaN,
- undefined,
- или пустая строка
("") ,
то объект инициализуется как false . Все остальные значения, включая объекты и строку "false" создают объект с начальным значением true .
|
|
|
Аннотация для списка: Массив пронумерованных элементов, также может служить стеком или очередью
Введение: Массив пронумерованных элементов, также может служить стеком или очередью. Для ассоциативных массивов используйте Object.
Синтаксис: /* обычный синтаксис */
var array = [ elem0, elem1, elem2, ... ]
var empty = []
/* Синтаксис с new Array() */
var array = new Array( elem0, elem1, elem2, ...)
var empty = new Array()
/* Редкий синтаксис: аргумент new Array - одно число.
При этом создается массив заданной длины,
все значения в котором undefined */
var array = new Array(10)
Аргументы:
- elem0, elem1, ...
-
- Если ни один из параметров
elem0, elem1, ... не указан, то инициализируется пустой массив.
- Если указан лишь один числовой параметр
elem0 и массив объявлен через new Array , то будет инициализирован пустой массив длины, равной данному числу. При этом все элементы являются undefined .
- В ином случае создается массив из перечисленных элементов.
Описание конструктора, примеры создания: Объект Array предоставляет функционал
- Массива с любыми числовыми индексами (разреженного)
- Стека/очереди
Для задания массива, как правило, используется синтаксис с квадратными скобками. Объявление через new Array тоже возможно, но почти не используется.
Пример: Создать пустой массив
var arr = []
Пример: добавить элемент в конец
arr[arr.length] = 5 /* или arr.push(5) */
Пример: Создать массив из разных элементов
var arr = [ 4, "test", , false, [0,1] ]
alert(arr[1]) // => "test"
alert(arr[2]) // => undefined
alert(arr[3]) // => false
alert(arr[4][1]) // => 1
Можно добавить объект под любым индексом, даже превосходящим текущую длину массива. При этом массив хранит (и потребляет память) только те элементы, которые установлены.
В примере ниже массив будет хранить два элемента: номер 1 и номер 999.
Пример: разреженный массив
var arr = []
arr[1] = 5
arr[999] = 6
alert(arr[0]) // => undefined, такого значения нет
alert(arr.length) // => 1000 : последний индекс+1
Ассоциативные массивы
Класс Array рекомендуется использовать только для массивов с числовыми индексами.
Для ассоциативных массивов в javascript применяется Object.
Многомерные массивы
Для многомерных массивов в javascript нет кросс-браузерного синтаксиса.
Обычно используется массив массивов, например:
// 3 в ширину 3 в высоту
// каждый подмассив - колонка
var matrix = [ [1,2,3], [4,5,6], [7,8,9] ]
alert(matrix[1][1]) // 5
|
|
|
Аннотация для списка: Базовый объект для строк. Позволяет управлять текстовыми строками, форматировать их и выполнять поиск подстрок.
Синтаксис: a = 'my string'
b = new String(object) // синтаксис устарел и не используется
c = String(object) Аргументы: string - Необязательный. Любая группа знаков Юникода.
Описание конструктора, примеры создания: Объекты String , как правило, создаются неявно с помощью строковых литералов.
// кавычки любые - без разницы
var str = "string literal"
В строковых литералах можно использовать escape-последовательности для представления особых знаков, которые нельзя напрямую использовать в строках, например символа перевода строки или знаков Юникода. При компиляции сценария каждая escape-последовательность в строковом литерале преобразуется в знаки, которые она представляет.
Можно указать юникодный символ явным образом, через его код.
var str = "\u1234"
Объекты String , заданные через кавычки (и называемые "примитивными" строками), немного отличаются от объектов String , созданных с помощью оператора new. Так, например, типом (typeof) данных объекта, созданного при помощи new , является 'object' , а не 'string' . И такому объекту можно напрямую назначать дополнительные свойства и методы. В остальном - интерпретатор автоматически превращает примитивные строки в объекты.
"12345".length // 5
Доступ к символам
Доступ к символам осуществляется при помощи метода String#charAt
return 'cat'.charAt(1); // возвратит "a"
Также существует отсутствующий в стандарте ECMA-262 способ - обращение к строке как к массиву:
var str = 'cat'
return str[1] // "a"
В отличие от языков C/PHP/и т.п., однажды созданную строку нельзя изменить: символы можно только считывать, но не менять.
Для изменения строковой переменной применяется присваивание измененной строки:
str = "строка"
str = str.charAt(4) + str.charAt(5) + str.charAt(6) // "ока"
Сравнение строк
Для сравнения строк используются обычные операторы < >.
|
|
|
Аннотация для списка: Позволяет работать с регулярными выражениями.
Синтаксис: // полная форма записи
var expr = new RegExp(pattern [, flags]);
// сокращенная форма записи (литеральный формат)
var expr = /pattern/flags; Аргументы:
- pattern
- Шаблон поиска (текст регулярного выражения).
- flags
-
Способы поиска по шаблону:
- g — глобальный поиск (обрабатываются все совпадения с шаблоном поиска);
- i — не различать строчные и заглавные буквы;
- m — многострочный поиск.
Порядок указания флагов не имеет значения.
Описание конструктора, примеры создания: Когда регулярное выражение создается при помощи конструктора new RegExp(…) , необходимо помнить, что обратные слеши (\) должны экранироваться, например:
var expr = new RegExp('\\w', 'ig');
При использовании литерального формата, этого делать не нужно:
var expr = /\w/gi;
Обе записи эквивалентны. Первый вариант может понадобится, если вам придется генерировать регулярное выражение динамически.
Виды символов
В регулярных выражениях различают следующие виды символов:
Обычные символы
- A..z — английские буквы от A до z, строчные и заглавные;
- 0..9 — цифры;
- { } — фигурные скобки, кроме случаев, когда они составляют группу вида {n,m} (где n и m — числа) и её вариации;
- = — равно;
- < — меньше;
- > — больше;
- - — минус;
- , — запятая;
- и др.
Специальные символы
- ( ) — круглые скобки;
- [ ] — квадратные скобки;
- \ — обраный слеш;
- . — точка;
- ^ — степень;
- $ — знак доллара;
- | — вертикальная черта;
- ? — вопросительный знак;
- + — плюс.
Формирование регулярного выражения
При формировании шаблона поиска используется близкий к классическому PCRE синтаксис.
Спецсимволы в регулярном выражении
Свернуть/Развернуть таблицу
\ |
Для обычных символов - делает их специальными. Например, выражение /s/ ищет просто символ 's'. А если поставить \ перед s, то /\s/ уже обозначает пробельный символ.И наоборот, если символ специальный, например *, то \ сделает его просто обычным символом "звездочка". Например, /a*/ ищет 0 или больше подряд идущих символов 'a'. Чтобы найти а со звездочкой 'a*' - поставим \ перед спец. символом: /a\*/ . |
^ |
Обозначает начало входных данных. Если установлен флаг многострочного поиска ("m") , то также сработает при начале новой строки.Например, /^A/ не найдет 'A' в "an A", но найдет первое 'A' в "An A." |
$ |
Обозначает конец входных данных. Если установлен флаг многострочного поиска, то также сработает в конце строки.Например, /t$/ не найдет 't' в "eater", но найдет - в "eat". |
* |
Обозначает повторение 0 или более раз. Например, /bo*/ найдет 'boooo' в "A ghost booooed" и 'b' в "A bird warbled", но ничего не найдет в "A goat grunted". |
+ |
Обозначает повторение 1 или более раз. Эквивалентно {1,} . Например, /a+/ найдет 'a' в "candy" и все 'a' в "caaaaaaandy". |
? |
Обозначает, что элемент может как присутствовать, так и отсутствовать. Например, /e?le?/ найдет 'el' в "angel" и 'le' в "angle."Если используется сразу после одного из квантификаторов * , + , ? , или {} , то задает "нежадный" поиск (повторение минимально возможное количество раз, до ближайшего следующего элемента паттерна), в противоположность "жадному" режиму по умолчанию, при котором количество повторений максимально, даже если следующий элемент паттерна тоже подходит.Кроме того, ? используется в предпросмотре, который описан в таблице под (?=) , (?!) , и (?: ) . |
. |
(Десятичная точка) обозначает любой символ, кроме перевода строки: \n \r \u2028 or \u2029. (можно использовать [\s\S] для поиска любого символа, включая переводы строк). Например, /.n/ найдет 'an' и 'on' в "nay, an apple is on the tree", но не 'nay'. |
(x ) |
Находит x и запоминает. Это называется "запоминающие скобки". Например, /(foo)/ найдет и запомнит 'foo' в "foo bar." Найденная подстрока хранится в массиве-результате поиска или в предопределенных свойствах объекта RegExp:
$1, ..., $9 .Кроме того, скобки объединяют то, что в них находится, в единый элемент паттерна. Например, (abc)* - повторение abc 0 и более раз. |
(?:x ) |
Находит x , но не запоминает найденное. Это называется "незапоминающие скобки". Найденная подстрока не сохраняется в массиве результатов и свойствах RegExp.Как и все скобки, объединяют находящееся в них в единый подпаттерн. |
x (?=y )
|
Находит x , только если за x следует y . Например, /Jack(?=Sprat)/ найдет 'Jack', только если за ним следует 'Sprat'. /Jack(?=Sprat|Frost)/ найдет 'Jack', только если за ним следует 'Sprat' или 'Frost'. Однако, ни 'Sprat' ни 'Frost' не войдут в результат поиска. |
x (?!y )
|
Находит x , только если за x не следует y . Например, /\d+(?!\.)/ найдет число, только если за ним не следует десятичная точка. /\d+(?!\.)/.exec("3.141") найдет 141, но не 3.141. |
x |y
|
Находит x или y . Например, /green|red/ найдет 'green' в "green apple" и 'red' в "red apple." |
{n } |
Где n - положительное целое число. Находит ровно n повторений предшествующего элемента. Например, /a{2}/ не найдет 'a' в "candy," но найдет оба a в "caandy," и первые два a в "caaandy." |
{n ,} |
Где n - положительное целое число. Находит n и более повторений элемента. Например, /a{2,} не найдет 'a' в "candy", но найдет все 'a' в "caandy" и в "caaaaaaandy." |
{n ,m } |
Где n и m - положительные целые числа. Находят от n до m повторений элемента. |
[xyz ] |
Набор символов. Находит любой из перечисленных символов. Вы можете указать промежуток, используя тире. Например, [abcd] - то же самое, что [a-d] . Найдет 'b' в "brisket" и 'c' в "ache". |
[^xyz ] |
Любой символ, кроме указанных в наборе. Вы также можете указать промежуток. Например, [^abc] - то же самое, что [^a-c] . Найдет 'r' в "brisket" и 'h' в "chop." |
[\b] |
Находит символ backspace. (Не путать с \b .) |
\b |
Находит границу слов (латинских), например пробел. (Не путать с [\b] ). Например, /\bn\w/ найдет 'no' в "noonday"; /\wy\b/ найдет 'ly' в "possibly yesterday." |
\B |
Обозначает не границу слов. Например, /\w\Bn/ найдет 'on' в "noonday", а /y\B\w/ найдет 'ye' в "possibly yesterday." |
\cX |
Где
X - буква от A до Z. Обозначает контрольный символ в строке. Например, /\cM/ обозначает символ Ctrl-M. |
\d |
находит цифру из любого алфавита (у нас же юникод). Используйте [0-9], чтобы найти только обычные цифры. Например, /\d/ или /[0-9]/ найдет '2' в "B2 is the suite number." |
\D |
Найдет нецифровой символ (все алфавиты). [^0-9] - эквивалент для обычных цифр. Например, /\D/ или /[^0-9]/ найдет 'B' в "B2 is the suite number." |
\f,\r,\n |
Соответствующие спецсимволы form-feed, line-feed, перевод строки. |
\s |
Найдет любой пробельный символ, включая пробел, табуляцию, переводы строки и другие юникодные пробельные символы. Например, /\s\w*/ найдет ' bar' в "foo bar." |
\S |
Найдет любой символ, кроме пробельного. Например, /\S\w*/ найдет 'foo' в "foo bar." |
\t |
Символ табуляции. |
\v |
Символ вертикальной табуляции. |
\w |
Найдет любой словесный (латинский алфавит) символ, включая буквы, цифры и знак подчеркивания. Эквивалентно [A-Za-z0-9_] . Например, /\w/ найдет 'a' в "apple," '5' в "$5.28," и '3' в "3D." |
\W |
Найдет любой не-(лат.)словесный символ. Эквивалентно [^A-Za-z0-9_] . Например, /\W/ и /[^$A-Za-z0-9_]/ одинаково найдут '%' в "50%." |
\n |
где n - целое число. Обратная ссылка на n-ю запомненную скобками подстроку. Например, /apple(,)\sorange\1/ найдет 'apple, orange,' в "apple, orange, cherry, peach.". За таблицей есть более полный пример. |
\0 |
Найдет символ NUL. Не добавляйте в конец другие цифры. |
\xhh |
Найдет символ с кодом hh (2 шестнадцатиричных цифры) |
\uhhhh |
Найдет символ с кодом hhhh (4 шестнадцатиричных цифры). |
Пример: изменение формата строки
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
alert(newstr); // "Smith, John"
|
|
|
Аннотация для списка: Базовый объект javascript
Введение: В яваскрипт Object предоставляет общие методы для всех яваскрипт-объектов.
Кроме того, он используется как ассоциативный массив. Более подробно про Object можно почитать в разделе Объекты, ООП.
Синтаксис: obj = new Object( [value] )
// или, более часто
obj = {
key1: val1,
key2: val2,
...
}
Аргументы:
- keyN
- Ключи ассоциативного массива
- valN
- Значения ассоциативного массива
Описание конструктора, примеры создания: Ключом ассоциативного массива может быть любая строка, которая ассоциируется с конкретным элементом массива. Например, для массива:
var man = {
lastname: "Иванов",
firstname: "Василий",
middlename: "Петрович"
}
man - имя переменной, lastname , firstname и middlename - ключи массива
Иванов, Василий, Петрович - значения элементов массива
По ключу можно обратиться к конкретному элементу.
Более подробно узнать про ассоциативные массивы, объекты и ООП вы можете в разделе учебника: Объекты, ООП.
|
|
|
Аннотация для списка: Функции для работы с датой и временем
Введение: Дата измеряется в миллисекундах, начиная от полуночи 01 января 1970 года GMT+0. День содержит 86,400,000 миллисекунд.
Объект Date ведет себя одинаково на всех платформах.
Date поддерживает как методы для работы в зоне UTC (GMT+0), так и методы для работы с местным временем.
Местное время - это то, которое установлено на компьютере, на котором выполняется яваскрипт.
Синтаксис: dateObj = new Date()
dateObj = new Date(dateVal)
dateObj = new Date(year, month, date[, hours, minutes, seconds, ms] )
Аргументы:
- dateVal
-
- Если параметр является числовым, то он интерпретируется как количество миллисекунд от 1-Янв-1970 00:00.
- Если строкой, то она разбирается и интерпретируется как дата по стандартным правилам Date.parse.
- year
- Год в формате YYYY.
- month
- Месяц от 0 (Янв) до 11 (Дек).
- date
- День месяца от 1 до 31.
- hours
- Параметр должен быть указан, если указан параметр
minutes . Устанавливает кол-во часов от 0 до 23.
- minutes
- Параметр должен быть указан, если указан параметр
seconds . Устанавливает количество минут: от 0 до 59.
- seconds
- Параметр должен быть указан, если указан параметр
ms . Устанавливает количество секунд: от 0 до 59.
- ms
- Количество миллисекунд: от 0 до 999.
Описание конструктора, примеры создания: Если конструктор запущен без аргументов, то возвращается текущая дата.
Пример: получить текущую дату
var today = new Date()
При вызове с одним аргументом - строкой, строка разбирается и интерпретируется как дата, так же, как и в методе Date.parse.
Пример: создать дату из строки
var date = new Date("21 May 1958 10:12") // используется редко
При объявлении с несколькими аргументами, отсутствующие аргументы автоматически считаются равными 0.
Пример: объявление даты с несколькими аргументами
new Date(1)
// Thu Jan 01 1970 03:00:00 GMT+0300 (Russian Standard Time)
new Date(1,2)
// Fri Mar 01 1901 00:00:00 GMT+0300 (Russian Standard Time)
new Date(1,2,3)
// Sun Mar 03 1901 00:00:00 GMT+0300 (Russian Standard Time)
new Date(1,2,3,4)
// Sun Mar 03 1901 04:00:00 GMT+0300 (Russian Standard Time)
new Date(1,2,3,4,5)
//Sun Mar 03 1901 04:05:00 GMT+0300 (Russian Standard Time)
new Date(1,2,3,4,5,6)
//Sun Mar 03 1901 04:05:06 GMT+0300 (Russian Standard Time)
|
|
|
|
Поиск по сайту
|
|
Содержание
|
|
Последние темы на форуме
|
Forum |
|