Дополнительные операторы JavaScript
Подведем промежуточный итог знакомства с JavaScript. На самом деле, мы с вами рассмотрели не так уж мало: достаточно сказать, что мы изучили практически все операторы этого языка. Конечно, все дело в том, что их не так много: операторы организации циклов (for, while и do...while), услов ные операторы (if и switch) и операторы манипулирования объектами, кото рые мы пока не рассматривали. Этих операторов всего два: with и for...in. Оба применяются в основном для сокращения объема вводимого текста. Например, вместо того чтобы написать
document.open (); document.write("Привет!") ; document.close();
можно использовать такую сокращенную запись:
with (document) {
open () ;
write("Привет!");
close ();
Во втором случае мы сэкономили время, так как не пришлось много раз вводить длинное слово document. Однако на первых порах лучше не зло употреблять этой возможностью, поскольку весь текст становится труд нее для восприятия с первого взгляда.
Другой оператор — for... in так же, как и оператор for, организует цикл. Но только вместо условия цикла при этом нужно указать объект, по всем свой ствам которого этот цикл и “пройдется”. Наверное, предыдущая фраза была не совсем понятна, поэтому поясним ее на примере.
Мы уже знаем о двух свойствах, позволяющих определить версию броузера —это navigator.appName и navigator.appVersion. Оба принадлежат объекту navigator. А между прочим, у этого объекта есть еще ряд интересных свойств. Чтобы их просмотреть, давайте создадим страницу, содержащую небольшой сценарий.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Cвойствa Navigator</TITLE>
</HEAD>
<BODY>
<SCRIPT>
for (q in. navigator) document.write(q+"="+navigator[q]+"<BR>") ;
</SCRIPT>
</BODY>
</HTML>
Работает этот сценарий следующим образом. Переменной q поочередно присваивается имя каждого свойства объекта navigator.
На экран при этом выводится (с помощью метода document.write) имя свойства (q), и, после знака равенства, значение свойства — (navigator[q])
. Таким образом, можно узнать о свойствах, о существовании которых мы до этого даже не подо зревали!
Вот, например, что нам покажет броузер Internet Explorer версии 5.0, если загрузить в него эту страницу:
appCodeName=Mozilla appMinorVersion=0 appName=Microsoft Internet Explorer appVersion=4.0 (compatible; MSIE 5.0; Windows 98; DigExt) cookieEnabled=true cpuClass=x86 mimeTypes=
onLine=true opsProfile= platform=Win32 plugins= systemLanguage=ru userAgent=Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) userLanguage=ru userProfile=
Как видите, свойств довольно много. Некоторые из них, правда, дублируют друг друга. Например, свойство appMinorVersion — это число, стоящее после точки в appVersion (номер подверсии). А значение свойства userAgent состоит из комбинации значений appCodeName и appVersion. Кстати, различные броузеры покажут нам не только различные значения свойств, но и представят различный их набор. Вот, например, результат загрузки той же страницы в броузер Netscape 6:
appCodeName=Mozi1 la appName=Netscape appVersion=5.0 (Windows; en-US) language=en-US mimeTypes=[object MimeTyi " •Array] platform=Windows plugins=[object PluginArray] securityPolicy=
userAgent=Mozilla/5.0 (Windows; N; Win98; en-US; ml4) Netscape6/ 6. Obi
cookieEnabled=true
Таким образом, оператор цикла for...in можно использовать не только для сокращения времени “стучания по клавиатуре”, но и для исследования броузера!
Кстати, условный оператор if также имеет сокращенную форму записи, которую в некоторых случаях удобно применять (особенно если условие и выполняемые действия достаточно компактны). Для этого следует про сто написать условие, затем поставить знак вопроса, и после него указать действие, выполняемое в случае правильности условия. Затем, после двое точия, можно указать действие, выполняемое в противном случае.
Например, вместо:
if (a<=100) some function(a) ; else alert("Число превышает допустимое значение!");
можно написать так:
(а<=100) ? some function(a) : alert("Число превышает допустимое значение!");
Здесь some_function() — просто какая-то функция, определенная где-то на веб-странице.