В этой и следующей главах приведено описание исполняющей системы Microsoft JScript, которая существенно расширяет возможности обозревателей Internet Explorer. Все описанные ниже объекты реализованы как управляющие элементы ActiveX, интегрированные в библиотеку типов исполняющей системы JScript.
Словари: объект Dictionary
Объект Dictionary предназначен для создания словарей. Словарь в JScript аналогичен ассоциативному массиву языка PERL и представляет собой набор пар (ключ, значение). Значения могут быть данными любого типа. При этом каждое значение ассоциируется с уникальным ключом, который используется для его поиска и выборки из словаря. Обычно в качестве ключа используются числа или текстовые строки, хотя ключ может быть чем угодно, кроме массива. Конструктор объекта Dictionary имеет вид:
new ActiveXObject("Scripting.Dictionary")
Следующий пример демонстрирует использование словаря:
var d = new ActiveXObject("Scripting.Dictionary"); // Создаем словарь d d.Add("а", "Архангельск"); // Добавляем несколько пар d.Add("б", "Баку"); d.Add("в", "Воронеж"); var a = (new VBArray(d.Keys())).toArray(); // Извлекаем массив ключей var s = ""; for (var i = 0; i < d.Count; i++) // Просматриваем словарь s += a[i] + " - " + d(a[i]) + " "; document.write(s); // Выводим на экран результат
Последний оператор этого примера выведет на экран обозревателя текст:
а - Архангельск б - Баку в - Воронеж
Свойства объекта DictionaryСвойство | Описание |
---|
CompareMode | Способ сравнения ключей. | Count | Количество элементов в словаре. | Item | Значение, соответствующее ключу. | Key | Изменяет значение ключа. |
Методы объекта DictionaryМетод | Описание |
---|
Add | Добавляет в словарь пару (ключ, значение). | Exists | Проверяет наличие заданного ключа в словаре. | Items | Возвращает массив значений словаря. | Keys | Возвращает массив ключей словаря. | Remove | Удаляет из словаря пару (ключ, значение). | RemoveAll | Очищает словарь. |
Свойство CompareMode
Свойство CompareMode позволяет задать способ сравнения текстовых ключей в словаре объект. Оно может принимать следующие значения:
0 | Двоичное сравнение. Задает сравнение строк на основе порядка сортировки, определяемого внутренним двоичным представлением символов. В Windows порядок сортировки определяется кодовой страницей символов, например: A < B < E < Z < a < b < e < z < Б < Л < Ш < б < л < ш. | 1 | Текстовое сравнение. Задает сравнение строк без учета регистра символов на основе национальной настройки операционной системы. Тем же символам, что и выше, в этом случае соответствует следующий порядок: (A=a) < (B=b) < (E=e) < (Z=z) < (Б=б) < (Л=л) < (Ш=ш). | 2 | Сравнение на основе национальной настройки базы данных. В обозревателях не используется. |
Значения, большие двух, могут использоваться для сравнения ключей в определенной кодировке символов и в этом случае они должны быть равны идентификатору кодировки (LCID).
Значение этого свойства может быть считано в любое время, но задается оно до занесения в словарь любых значений. Попытка задать способ сравнения ключей для непустого словаря приводит к ошибке исполнения.
Пример:
var d = new ActiveXObject("Scripting.Dictionary"); d.CompareMode = 0; // различать строчные и прописные буквы в ключах d.Add ("а", "ааа"); d.Add ("А", "ААА"); document.write(d.Item("а"));
Свойство Count
Значением свойства Count является размер объекта, т. е. количество содержащихся в нем пар (ключ, значение). Пример использования этого свойства приведен выше.
Свойство Item
Значением свойства Item является значение словаря объект, соответствующее ключу. Точнее говоря, при чтении этого свойства:
Если заданный ключ в словаре отсутствует, то создается новая пара с данным ключом и неопределенным значением и возвращается значение undefined.
Если заданный ключ в словаре есть, то возвращается ассоциированное с ним значение.
При задании нового значения этого свойства:
Если заданный ключ в словаре отсутствует, то создается новая пара с данным ключом и заданным значением.
Если заданный ключ в словаре есть, то ассоциированное с ним значение заменяется на заданное.
Например, следующий сценарий
var d = new ActiveXObject("Scripting.Dictionary"); d.Add("а", "Архангельск"); d.Add("б", "Баку"); d.Add("в", "Воронеж"); d.Item("г") = "Гомель"; document.write(d.Item("г"));
выведет на экран обозревателя текст Гомель.
Свойство Key
Свойство Key используется для изменения ключа в словаре объект. При этом:
Если заданный ключ в словаре отсутствует, то создается новая пара с ключом новый_ключ и неопределенным значением.
Если заданный ключ в словаре есть, то он заменяется на новый_ключ.
Чтение этого свойства невозможно.
Например, следующий сценарий
var d = new ActiveXObject("Scripting.Dictionary"); d.Add("а", "Архангельск"); d.Add("б", "Баку"); d.Add("в", "Воронеж"); d.Key("а") = "ар"; document.write(d.Item("ар"));
выведет на экран обозревателя текст Архангельск.
Метод Add
Синтаксис: | объект.Add(ключ, значение) | Аргументы: | ключ - ключ создаваемой пары; значение - соответствующее значение |
Метод Add добавляет в словарь объект новую пару (ключ, значение). Если данный ключ уже имеется в словаре, то возникает ошибка. Примеры использования этого метода приведены выше.
Метод Exists
Синтаксис: | объект.Exists(ключ) | Аргументы: | ключ - выражение, задающее искомый ключ | Результат: | логическое значение |
Метод Exists возвращает true, если ключ имеется в словаре объект и false в противном случае. Пример:
var d = new ActiveXObject("Scripting.Dictionary"); d.Add("а", "Архангельск"); var x = d.Exists("а"); // x равно true
Метод Items
Синтаксис: | объект.Items() | Результат: | массив VBScript |
Метод Items возвращает массив значений словаря объект. Возвращаемый массив имеет формат VBScript, поэтому для его использования в JScript следует пользоваться приемом, указанным в следующем примере:
var d = new ActiveXObject("Scripting.Dictionary"); // Создаем словарь d d.Add("а", "Архангельск"); // Добавляем несколько пар d.Add("б", "Баку"); d.Add("в", "Воронеж"); var a = (new VBArray(d.Items())).toArray(); // Извлекаем массив значений var s = ""; for (var i in a) // Просматриваем словарь s += a[i] + " "; document.write(s); // Выводим на экран результат
Последний оператор этого примера выведет на экран обозревателя текст Архангельск Баку Воронеж.
Метод Keys
Синтаксис: | объект.Keys() | Результат: | массив VBScript |
Метод Keys возвращает массив ключей словаря объект. Возвращаемый массив имеет формат VBScript, поэтому для его использования в JScript следует пользоваться приемом, указанным в следующем примере:
var d = new ActiveXObject("Scripting.Dictionary"); // Создаем словарь d d.Add("а", "Архангельск"); // Добавляем несколько пар d.Add("б", "Баку"); d.Add("в", "Воронеж"); var a = (new VBArray(d.Keys())).toArray(); // Извлекаем массив ключей var s = ""; for (var i in a) // Просматриваем словарь s += a[i] + " "; document.write(s); // Выводим на экран результат
Последний оператор этого примера выведет на экран обозревателя текст а б в.
Метод Remove
Синтаксис: | объект.Remove(ключ) | Аргументы: | ключ - искомый ключ |
Метод Remove удаляет из словаря объект пару с заданным (ключом. Если данного ключа нет в словаре, то возникает ошибка. Пример:
var d = new ActiveXObject("Scripting.Dictionary"); // Создаем словарь d d.Add("а", "Архангельск"); // Добавляем несколько пар d.Add("б", "Баку"); d.Add("в", "Воронеж"); d.Remove("б"); // Удаляем вторую пару
Метод RemoveAll
Синтаксис: | объект.RemoveAll() |
Метод RemoveAll очищает словарь объект, т. е. удаляет из него все пары.
1 2 3 4
8 8 8
| |