|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
6.4. Інші можливості мови JavaScript Додаткові оператори 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() - просто якась функція, визначена десь на веб-сторінці. Вбудовані функції JavaScript Тепер про функції. Ми вже навчилися визначати власні функції. Крім того, в JavaScript існують так звані вбудовані (або зумовлені) функції. Деякі з них ми вже знаємо - це isNaNQ і parselnt(). До речі, функція parselnt() має ще одну чудову особливість: з її допомогою можна розпізнати число, введене в будь-якій системі числення, починаючи від двійкової і кінчаючи 36-ричной. Для цього потрібно просто як другий аргумент вказати підставу системи числення, наприклад, от так: parselnt("1110", 2); В цьому випадку рядок 1110 буде інтерпретована як двійкове число, і результатом функції буде число 14. Окрім цих двох функцій існують ще функції parseRoat() і isFinite(). Функція parseFloat() не може приймати другий аргумент, зате може виділити з рядка дробове число. Наприклад, якщо написати parseint("3.289 times"); то результатом выполнения функции будет число 3, а если написать parseFloat("3.289 times"); результатом буде число 3,289. Крім того, за допомогою цієї функції можна розпізнати число, введене в нормалізованій формі, наприклад: parseFloat ("3.755е-2") ; даст в результате 0,03755. Що стосується функції isFinite(), то вона приймає значення істина, якщо аргумент є числом, або брехня - інакше. Як ви можете відмітити, вона робить те ж, що і функція isNaN(), тільки з протилежним результатом. Існує ще корисна функція eval(). Вона зазвичай визначається, як обчислення виразу без посилання на конкретний об'єкт. Сходу це зрозуміти досить важко. Іноді в JavaScript використовуються конструкції, дуже схожі на функції. Наприклад, в одному з попередніх розділів для піднесення до ступеня ми написали: Math.pow(j,i) Такі конструкції, як правило, є методами одного з вбудованих об'єктів. Якщо ви поки погано уявляєте собі, що це таке, не засмучуйтеся. Для їх вживання це абсолютно не важливо, оскільки їх синтаксис дуже схожий на синтаксис функцій. Наприклад, вище було продемонстровано піднесення до ступеня. Можна здійснювати і інші дії за допомогою об'єкту Math. Наприклад, для округлення числа i до найближчого цілого досить написати Math.round(i), а для обчислення його синуса - Math.sin(i). Крім того, можна користуватися властивостями об'єкту Math. Якщо, наприклад, потрібно було ввести число тг, то не варто згадувати його з точністю до якогось там знаку - досить написати замість нього Math PI. Можна так само визначити інші важливі математичні константи. Крім об'єкту Math, в JavaScript є та інші, наприклад Array для роботи з масивами, Date для роботи з датами та інші.
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|