Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие по Java Script 1.doc
Скачиваний:
131
Добавлен:
12.02.2015
Размер:
1.44 Mб
Скачать

Инструкция with

Инструкция with используется для временного изменения цепочки областей видимости. Она имеет следующий синтаксис:

with (объект)

инструкция

Эта инструкция добавляет объект в начало цепочки областей видимости, исполняет инструкцию, а затем восстанавливает цепочку в ее первоначальном состоянии.

На практике инструкция with помогает значительно сократить объем набираемого текста. В клиентском языке JavaScript часто работают с глубоко вложенными иерархиями объектов. Например, для доступа к элементам HTML-формы придется пользоваться, например, такими выражениями:

frames[1].document.forms[0].address.value

Если надо обратиться к этой форме несколько раз, можно воспользоваться инструкцией with для добавления формы в цепочку областей видимости:

with(frames[1].document.forms[0]) {

// Здесь обращаемся к элементам формы непосредственно, например:

name.value = "";

address.value = "";

email.value = "";

}

Это сокращает объем текста программы – больше не надо указывать фрагмент frames[1].document.forms[0] перед каждым именем свойства. Этот объект представляет собой временную часть цепочки областей видимости и автоматически участвует в поиске, когда JavaScript требуется разрешить такой идентификатор, как address.

Несмотря на удобство этой конструкции в некоторых случаях, ее использование не приветствуется. JavaScript-код с инструкцией with сложен в оптимизации и поэтому может работать медленнее, чем эквивалентный код, написанный без нее. Кроме того, определения функций и инициализация переменных в теле инструкции with могут приводить к странным и трудным для понимания результатам. По этим причинам использовать инструкцию with не рекомендуется.

К тому же существуют и другие абсолютно законные способы уменьшения объема набираемого текста. Так, предыдущий пример можно переписать следующим образом:

var form = frames[1].document.forms[0];

form.name.value = "";

form.address.value = "";

form.email.value = "";

Пустая инструкция

И наконец, последняя из допустимых в JavaScript инструкций – пустая инструкция. Она выглядит следующим образом:

;

Выполнение пустой инструкции, очевидно, не имеет никакого эффекта и не производит никаких действий. Можно подумать, что особых причин для ее применения нет, однако изредка пустая инструкция может быть полезна, когда требуется создать цикл, имеющий пустое тело. Например:

for(i=0; i < a.length; a[i++] = 0); // Инициализация массива a

Обратите внимание, что случайное указание точки с запятой после правой круглой скобки в циклах for и while или в инструкции if может привести к неприятным ошибкам, которые сложно обнаружить. Например, следующий фрагмент вряд ли делает то, что предполагал его автор:

if ((a == 0) || (b == 0)); // Ой! Эта строка ничего не делает...

o = null; // а эта строка выполняется всегда.

Когда пустая инструкция применяется специально, код желательно снабжать исчерпывающими комментариями. Например:

for(i=0; i < a.length; a[i++] = 0) ; /* Пустое тело цикла */

Глава 3 Объекты

Объекты представляют собой программные единицы, обладающие некоторыми свойствами. Об объекте мы можем судить по значениям его свойств и описанию того, как он функционирует. Программный код встроенных в JavaScript объектов нам недоступен. Следует научиться пользоваться объектами. Так, например, управление веб-страницами с помощью сценариев, написанных на JavaScript, заключается в использовании и изменении свойств объектов HTML-документа и самого браузера.

Встроенные объекты имеют фиксированные названия и свойства. Все свойства этих объектов разделяют на два вида: просто свойства и методы. Свойства аналогичны обычным переменным. Они имеют имена и значения. Некоторые свойства объектов доступны только для чтения. Это означает, что их значения нельзя изменять. Другие свойства доступны и для записи — их значения можно изменять с помощью оператора присвоения. Методы аналогичны функциям, они могут иметь параметры или не иметь их.

Чтобы узнать значение свойства объекта, необходимо указать имя этого объекта и имя свойства, отделив их друг от друга точкой: имя_объекта.свойство. Заметим, что объект может и не иметь свойств.

Мы можем заставить объект выполнить тот или иной присущий ему метод. В этом случае также говорят о применении метода к объекту. Синтаксис соответствующего выражения такой: имя_объекта.метод(параметры). Заметим, что объект может не иметь методов.

В свете изложенного выше объект можно понимать как некоторый контейнер, содержащий переменные-свойства и функции-методы. Разумеется, в этом контейнере есть еще что-то, но оно скрыто от нас. Мы можем воздействовать на объект только с помощью свойств и методов. В популярных книгах часто сравнивают объект с черным ящиком, у которого есть входы и выходы, доступные для наблюдения и, возможно, для управления.

В JavaScript математические вычисления, сложная обработка строк и дат, а также создание массивов производятся с помощью соответствующих встроенных объектов. Для разработчиков веб-сайтов особенно важны объекты String (обработка строк), Array (массивы), Math (математические формулы и константы) и Date (работа с датами).

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

Например, для формульных вычислений используется статический объект Math, а в случае массивов создаются экземпляры статического объекта Array, содержащие конкретные данные, к которым применимы все общие методы и свойства статического объекта Array.

Встроенные объекты имеют, среди прочих, свойство prototype (прототип), с помощью которого можно добавлять новые свойства и методы к уже существующим экземплярам объектов. Эти новые свойства и методы, разумеется, вы должны предварительно сами продумать и воплотить в виде программных кодов.

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

Объекты – это составной тип данных, они объединяют множество значений в единый модуль и позволяют сохранять и извлекать значения по их именам. Говоря другими словами, объекты – это неупорядоченные коллекции свойств, каждое из которых имеет свои имя и значение. Именованные значения, хранящиеся в объекте, могут быть данными элементарных типов, такими как числа или строки, или сами могут быть объектами.