6. Вбудовані об'єкти

Об'єкт Date
      У JavaScript можна використовувати деякі наперед задані об'єкти: Date, Array, Math тощо. Розглянемо об'єкт Date. Він дозволяє працювати і з датою, і з часом. Почнемо з прикладу подання на екрані поточного часу. Спочатку потрібно створити новий об'єкт Date за допомогою вказівки new:

today= new Date()

Таким чином створено новий об'єкт Date з назвою today. Якщо, як у поданому прикладі, при створенні цього об'єкту не було вказано дату й час, то будуть запозичені дата й час, поточні на момент виконання вказівки.
      До об'єкту Date можна застосувати певні методи: getHours(), setHours(), getMinutes(), setMinutes(), getMonth(), setMonth() тощо. Їхній зміст очевидний навіть при поверхневому знанні англійської мови.
      Для задання дати й часу маємо викликати вказівкою new метод Date() за таким форматом:

Date(рік, місяць, день, години, хвилини, секунди)

      Зауважте: нумерація місяців — з нуля для січня. Наприклад, для створення об'єкту Date, у якому задано 27 листопада 2011 року 17 годин 35 хвилин і 23 секунди, потрібно записати таке:

today= new Date(2011, 10, 27, 17, 35, 23)

      Напишемо скрипт, який виводить поточні дату й час таким чином:



Код має такий вигляд:

<script language="JavaScript">
<!-- hide
now= new Date();
document.write("Час:  " + now.getHours() + ":" + now.getMinutes() + "<br>");
document.write("Дата: " + now.getDate() + "." +(now.getMonth() + 1) + "."
                        + (1900 + now.getYear()));
// -->
</script>

      Зауважте: метод getYear() повертає кількість років, які минули з 1900 року. Тому до його результату додаємо 1900. Збільшення на 1 результату getMonth() обумовлено вже згаданою нумерацією місяців — з нуля для січня.
      Поданий скрипт може призвести до подання кількості хвилин однією цифрою. Наприклад, 12:3 зимість звичного 12:03.Розв'язання цього питання дивіться у наступному прикладі годинника:

Час: 
Дата:

Код має такий вигляд:

<html><head>
<script Language="JavaScript">                 <!-- hide
var timeStr, dateStr;
function clock()
{
  now= new Date();
                                       // час 
  hours = now.getHours();
  minutes = now.getMinutes();
  seconds = now.getSeconds();
  timeStr = "" + hours;
  timeStr += ((minutes < 10) ? ":0" : ":") + minutes;
  timeStr += ((seconds < 10) ? ":0" : ":") + seconds;
  document.clock.time.value = timeStr;
                                      // дата 
  date= now.getDate();
  month= now.getMonth()+1;
  year= now.getYear();
  dateStr= "" + date;
  dateStr+= ((month < 10) ? ".0" : ".") + month;
  dateStr+= "." + year;
  document.clock.date.value = dateStr;
  Timer= setTimeout("clock()",1000);
}                                                // -->
</script></head>
<body onLoad="clock()">
<form name="clock">
  Час:  <input type="text" name="time" size="8"  value=""><br>
  Дата:      <input type="text" name="date" size="8" value="">
</form>
</body></html>

Тут для щосекундного корегування вихідних даних використано метод setTimeout() при щосекундному створенні нового об'єкту Date, куди заносимо поточні час і дату.
      Фукцію clock() викликано одразу по завантаженні сторінки програмою опрацювання подій onLoad (див. тег <body>). HTML-сторінка містить два елементи форми для введення тексту. Функція clock() записує в обидва ці елементи у коректному форматі поточні час і и дату. Для цього використано рядкові змінні timeStr и dateStr. Проблему запису двома цифрами одноцифрового числа з нулем попереду вирішено таким чином:

timeStr+= ((minutes < 10) ? ":0" : ":") + minutes;
Це стислий запис звичнішого коду:
if (minutes < 10) timeStr+= ":0" + minutes
             else timeStr+= ":"  + minutes;

Об'єкт Array
      Починаючи з версії 1.1 мови JavaScript, можна використовувати об'єкт Array. Для створення нового масиву myArray потрібно записати:

myArray= new Array()

      Нумерацію елементів починають з нуля, номер вказують у квадратних дужках одразу після назви масиву. Елементам масиву можна надати різних за типом величин:

myArray[0]= 2011;
myArray[1]= "ua";

      Розмiр масиву встановлюється динамічно. Після запису myArray[2011]= "kiev" размір масиву буде встановлено на 2012 елементів. Розмір масиву може лише збільшуватися. Тому користуватися ним потрібно економно.
      Запис:

перший рядок
другий рядок
третій рядок
можна отримати у результаті виконання такого коду:
<script language="JavaScript">             <!-- hide

myArray= new Array();

myArray[0]= "перший рядок";
myArray[1]= "другий рядок";
myArray[2]= "третій рядок";

for (var i= 0; i< 3; i++)
{
  document.write(myArray[i] + "<br>");
}                                        // -->
</script>

      Спочатку створено новий масив з назвою myArray. Потім першим трьом його елементам надано відповідних величин. Після цього у циклі тричі виконано вказівку document.write(myArray[i] + "<br>");. За допомогою змінної i ведуть відлік циклів от 0 до 2. Таким чином тричі отримано виклик document.write(), що еквівалентно виконанню такого коду:

document.write(myArray[0] + "<br>");
document.write(myArray[1] + "<br>");
document.write(myArray[2] + "<br>");

Об'єкт Math
      Для здійснення математичних розрахунківможна скористатися властивостями й методами об'єкту Math.
      Сталі — властивості об'єкту Math — у коді Java Script позначають таким чином: Math.назва властивості.
      Властивості об'єкту Math такі:
E — число Ейлера e;
PI — число Піфагора π;
LN2 — натуральний логарифм числа 2, тобто ln 2 — ;
LN10 — натуральний логарифм числа 10, тобто ln 10 — ;
LOG2E — логарифм числа e за основою 2 — ;
LOG10E — логарифм числа e за основою 10 — ;
SQRT2 — арифметичний корінь квадратний з 2 — ;
SQRT1_2 — арифметичний корінь квадратний з 1/2 — .
      Функції — методи об'єкту Math — у коді Java Script позначають таким чином:
Math.назва методу(назва змінної-аргумента).
      Методи об'єкту Math такі:
abs — абсолютна величина (модуль);
acos — арккосинус;
asin — арксинус;
atan — арктангенс;
ceil — найменше ціле число, що не менше за аргумент;
cos — косинус;
exp — експонента;
floor — найбільше ціле число, що не перевищує аргумент;
log — натуральний логарифм;
max — найбільша з двох величин;
min — найменша з двох величин;
pow — результат піднесення першого аргументу до степеня, що збігається з другим аргументом;
random — випадкове число з (0; 1);
round — округлення величини аргумента до найближчого цілого числа;
sin — синус;
sqrt — арифметичний корінь квадратний;
tan — тангенс.
Наприклад, виклик Math.random() призводить до породження випадкового числа з проміжку [0;1]. Один з можливих результатів виклику

<script language="JavaScript"><!-- hide
document.write(Math.random())
</script>

такий: . При кожному новому завантаженні тут буде з'являтися нове число.

Об'єкт Number
      В доповнення до властивостей об'єкту Math доступ до деяких властивостей проходить через об'єкт Number див. таку таблицю.

ВластивістьОпис
MAX_VALUEНайбільше доступне додатне число, приблизно 1.79E+308. Величина може змінитися залежно від системи
MIN_VALUEНайменше доступне додатне число, приблизно 2.22E-308. Величина може змінитися залежно від системи
NaNСпеціальна нечислова величина, від англійською not a number — не число
POSITIVE_INFINITYДовільне додатне число, яке більше за Number.MAX_VALUE, конвертується у цю величину і подається як +Inf
NEGATIVE_INFINITYДовільне від'ємне число, яке менше за Number.MAX_VALUE, конвертується у цю величину і подається як -Inf.

Number.NaN — особлива властивість — нечислова величина (англійською not a number). Наприклад, ділення на нуль чи спроба використати рядок як число повертає Number.NaN. При порівнянні ця властивість не дорівнює ні жодному числу, ні самій собі. Тому не варто використовувати порівняння з Number.NaN. Для цього використовують функцію isNaN().

Об'єкт String
      Об'єкт String (текстовий рядок) має вбудовані методи, які застосовують при роботі з рядками. Одним з таких методів є substring, що повертає частину рядка. Він має два аргументи числового типу, що вказують на межі частини рядка. Щоб показати, як саме, покажемо, як працює такий код:

<script language="JavaScript"><!-- hide
document.write("0123456789".substring(1,5));
document.write("<BR>");
document.write("0123456789".substring(9,6));
// -->
</script>

У результаті маємо:

      Ще одна властивість об'єкту String — властивість довжини length рядка, величина якого дорівнює кількості символів у рядку.

[попереднє] [зміст] [наступне]