6. Встроенные объекты и функции.
Язык JavaScript содержит следующие встроенные (built-in) объекты и функции:
- String объекты,
- Math объекты,
- Date
объекты,
- встроенные функции.
6.1. Stri>ng объекты.
В язаыке JavaScript при присвоении значения переменной или свойству, всегда создается объект типа string . Литеральные строки также являются объектами типа string . Нпример, оператор
mystring = "Hello, World!"
создает объект типа string с именем mystring .
У объектов типа string имеются ряд методов, выполняющих:
- изменение строк, такие как - выделение подстроки и
изменение строки,
- HTML форматирование символов,
такие как bold и link.
Например, для приведенного выше объекта выполняется преобразование:
mystring.toUpperCase()
и результатом будет строка: "HELLO,WORLD!",
Методы объекта string:
ancor, big, blink, bold, charAt, fixed,
fontcolor, fontsize, indexOf,
italics, lastIndexOf, link,
small, strike, sub, substring, toLowerCase,
toUpperCase.
Примеры:
1. position = 10;
msg = "Welcome to my home Web
page";
subs = msg.substring(position,position+5)
2.subs.toUpperCase()
3. worldstring = "Hello, world";
document.write("<P>" + worldstring.bold());
document.write("<P>" + worldstring.italics());
var n
= worldstring.length
6.2. Math объекты.
Встроенные объекты типа Math имеют свойства и методы для математических констант и функций. Например: свойство PI метода Math содержит значение числа Пи и его можно использовать в приложениях как Math.PI.
Аналогично, стандартные математические функции являются методами объекта Math. Это целый ряд тригонометрических, логарифмических, экспоненциальных и других функций. Например, для использования тригонометрической функции синус, можно написать:
Math.sin(1.56).
Заметим, что аргументы всех тригонометрических методов объекта Math задаются в радианах. Использование оператора with для отдельной кодовой секции устраняет повторение типа "Math".
Например:
with (Math)
{
a = PI *
r*r;
y =
r*sin(theta)
x =
r*cos(theta)
}
Свойства объекта Math.
E, LN2, LN10, LOG2E, LOG10E, PI, SQRT1_2, SQRT2.
Методы объекта Math.
abs, acos, asin, atan, ceil, cos, exp, floor, log,
max, min, pow, random, round, sin, sqrt, tan.
Примеры:
1. document.write("The natural log of 10 is " + Math.log(10))
2.
document.write("The base 2 logarithm of E is " + Math.LOG2E)
3.
document.write("The maximum value is " + Math.max(10,20))
4.
document.write(""<P>The floor of 45.95 is " + Math.floor(45.95))
6.3. Date объекты.
Язык JavaScript не содержит определения данных типа даты, однако объект типа date и его методы дают возможность оперировать величинами типа дата и время в различных приложениях. Объект date имеет большое число методов для установки либо получения даты и времени, а также для различных манипуляций с ними. Объект date не имеет каких либо свойств. Отсчет времени в JavaScript в миллисекундах начинается с1 января 1970 00:00:00.
Для создания конкретного объекта типа date используется оператор new:
varName = new Date(parameters),
где:
varName - имя переменной JavaScript для вновь созданного объекта,
parameters - для конструирования объекта может принимать следующие значения:
- пусто: считываются текущие дата и время.
Например,
today = new
Date();
- строка в формате: "Month day,
year,hours:minutes:seconds".
Например:
Xmas95= new
Date("December 25, 1995, 13:30:00") ;
Опущенные указания часов минут или секунд принимают нулевые значения .
- целые значения для года, месяца и дня.
Например:
Xmas95 = new
Date(95,11,25);
- ряд численных значений для года, месяца, дня,
часов, минут и секунд.
Например:
Xmas95 = new
Date(95,11,25,9,30,0).
Большое число методов объекта date можно разделить на категории:
- "set" методы для установки даты и
времени объекта,
- "get" методы для
получения даты и времени,
- "to"
методы для получения текстовых значений типа string из объекта
date,
- "parse" и "UTC" методы
для преобразования форматов.
Методы "get" и "set" позволяют получить текущие значения даты и времени либо установить для них новые значения. Однако, нет полной симметрии для получения и установки времени. Так например, есть метод getDay для получения дня недели, но нет соответствующего метода типа setDay. Все эти методы используют целые значения :
- секунды и минуты: 0 -
59,
- часы: 0 - 23,
-
дни: 0 - 6 (дни недели),
- даты: 1 - 31 (дни
месяца),
- месяцы: 0 (Январь) - 11
(Декабрь),
- годы : начиная с 1900.
Например, при задании даты в следующем
виде:
Xmas95 = new Date("December
25, 1995")
метод Xmas95.getMonth() возвращает значение 11, а метод Xmas95.getYear() - 95.
Использование методов getTime и setTime бывает полезным для сравнения дат. Метод getTime возвращает значение времени в миллисекундах с начала вышеуказанного момента отсчета времени. Например, следующий фрагмент программы вычисляет число дней, оставшихся до Рождества (для покупки подарков):
today = new Date()
nextXmas = new Date("December 25,
1990")
nextXmas.setYear(today.getYear())
msPerDay = 24 * 60 * 60 * 1000 ;
// Number of milliseconds per day
daysLeft = (nextXmas.getTime() -
today.getTime()) / msPerDay;
daysLeft =
Math.round(daysLeft);
document.write("Number of Shopping Days until
Christmas: " + daysLeft);
В примере создается объект с именем today, который содержит текущие значения даты и времени. Затем создается объект типа date с именем nextXmas и устанавливается дата с текущим значением года. Далее вычисляется число миллисекунд в одном календарном дне, подсчитывется число дней, оставшихся до Рождества ( между датами today и nextXmas) и округляется до целого значения число дней.
Использование parse метода бывает полезным для присвоения значения даты для уже существующего объекта из текстового (строкового) представления даты. Например, следующие операторы, используют parse и setTime методы для присвоения нового значения даты IPOdate объекту:
IPOdate = new Date()
IPOdate.setTime(Date.parse("Aug 9, 1995"))
Методы объекта Date.
getDate, getDay, getHours, getMinutes, getMonth, getSeconds, getTime,
getYear,
setDate, setHours, setMinutes, setMonth, setSeconds, setTime,
setYear,
toGMTString, toLocalString, UTC, getTimezoneOffset.
Пример:
today = new Date()
if(today.getMinutes(0 < 10)
pad
= "0"
else pad = "";
if(today.getSeconds() < 10)
pads = "0"
else pads =
"";
timestr =
today.getHours()+":"+pad+today.getMinutes()+":"+pads+today.getSeconds();
window.status = timestr;
6.4. Встроенные функции.
В языке JavaScript имеется ряд встроенных функций высшего уровня (top-level):
eval, parseInt, parseFloat.
6.4.1. Функция eval.
Встроенная функция eval в качестве аргумента
принимает текстовую строку, содержащую выражения языка JavaScript, операторы
языка либо последовательность операторов. Выражения могут содержать переменные
языка и свойства существующих объектов. Если аргумент содержит выражение,
eval вычисляет его. Если аргумент содержит операторы языка,
eval выполняет их.
Применение функции
очень полезно для вычисления арифметических выражений, представлен-ных в
текстовом виде. Так например, поля ввода элементов form представляют
текстовые значения типа string и часто бывет нужным превратить их в
числовые значения.
В следующем примере считывется
текст с поля ввода expr структуры form, выполняется функция
eval и результат вычисления записывается в другое поле result.
<SCRIPT>
function compute(obj) {
obj.result.value = eval(obj.expr.value)
}
</SCRIPT>
<FORM
NAME="evalform">
Enter an expression: <INPUT TYPE=text NAME="expr"
SIZE=20 >
<BR>
Result: <INPUT TYPE=text NAME="result" SIZE=20
>
<BR>
<INPUT TYPE="button" VALUE="Click Me"
onClick="compute(this.form)">
</FORM>
Функция eval не ограничивается вычислением численных выражений. Ее аргументами могут быть объекты либо JavaScript операторы. Например, можно определить функцию с именем setValue с двумя аргументами: объектом и значением:
function setValue (myobj, myvalue) {
eval ("document.forms[0]." + myobj + ".value") = myvalue;
}
Используя эту функцию можно установить значение 42 элементу поля с именем "text1" в структуре form:
setValue(text1, 42).
6.4.2. Функции parseInt и parseFloat.
В JavaScript имеются две функции преобразования в
числа их строкового (текстового) представления, заданного в качестве аргумента
функции.
ParseFloat выполняет анализ
аргумента, представленного в строковом виде и пытается в качестве значения
функции вернуть представление числа с плавающей запятой. Если функция
обнаруживает символы в представленной строке, отличные от знаков ( + или -),
цифр (0- 9), десятичной точки, на этом преобразование заканчивается и оставшиеся
символы игнорируются. Если первый символ строки не конвертируется в число,
результатом функции будет значение NaN (not a
number).
Функция parseInt содержит два
аргумента. Первый аргумент - текстовое представление целого числа, а второй -
задание основания счисления .
Основание счисления
задается как:
10 - для преобразования в
десятичные числа,
8 - для
восьмеричных чисел,
16 - для
шестнадцатеричных и т.д.
Основание счисления в JavaScript может
устанавливаться явным образом , если строка начинается
с:
"0x" - для шестнадцатеричных
чисел,
"0" - для восьмеричных
чисел.
Если parseInt обнаруживает символ, не соответствующий выбранной системе счисления, оставшиеся в строке символы игнорируются и в качестве результата функция возвращает целое число, подготовленное до точки обнаружения ошибки. Если первый символ строки не конвертирует-ся в заданный тип числа, функция возвращает NaN. При конвертировании происходит усечение заданного числа до целого его значения.
Примеры:
1. Результат 3.14:
parseFloat("3.14")
parseFloat("314e-2")
var x = "3.14";
parseFloat(x)
2. Результат 15:
parseInt("F",16)
parseInt("17",8)
parseInt("15",10)
3. Результат 17:
parseInt("0x11",16)
parseInt("0x11",0)