Ява Золотая: история с географией
Radagast Kary
Спецвыпуск хакер, номер #002, стр. 002-056-4
Но, понятное дело, это еще не все. Теперь мы с тобой рассмотрим еще шесть потомков Object, которыми так или иначе пользуются JavaScript-программисты.
Array - массив. Инициализируется так:
var mycoolArray=new Array(2);
var yourcoolArray=new Array(2,3,4);
var ourcoolArray=new Array(new Array(2), new Array(4,5));
В вышеприведенных примерах в первом случае создается одномерный массив размера 2 (размер массива всегда доступен по arrayName.length), во втором случае - тоже одномерный, но длины 3 и заполненный не нулями, а вполне определенными циферками. Третий пример комбинирует два предыдущих, создавая двумерный массив.
В виде завершения могу привести процедуру увеличения размерности массива на один. Хорошая вещь, использованная мною не в одном скрипте.
function incDim(l)
{
if (l=='nil')
{
var g=new Array(1);
g[0]=new Array(2);
return g;
};
var g=new Array(l.length+1),i;
for(i=0;i<l.length;i++)
{
// в этом примере массив двумерный, но может быть
// и по-другому. Фантазируйте!
g[i]=new Array(2);
g[i][0]=l[i][0];
g[i][1]=l[i][1];
}
g[l.length]=new Array(2);
return g;
}
Boolean - очень малозначный (как и положено) булев тип. Тrue означает правду, false - ложь. Вообще-то, JavaScript - язык бестиповый, как будет отмечено ниже, но полезно знать, что при умышленном конвертировании true переходит в 'true' строковое или 1 числовое, false - в 'false' или 0 соответственно. При конвертировании в Boolean любое не нулевое значение перейдет в true.
Date - немного напоминающий и Global, и Object. Как константа только для чтения существует объект Date. И такой же (только маленький и неизменный) объект может быть создан в любом месте твоего скрипта. Как типовую задачку можно рассмотреть создание часов в статусной строке (это внизу бравзера есть такая фигня).
<HTML>
<HEAD>
<SCRIPT>
// Функцию надо вызывать только один раз.
function display_time_in_status_line()
{
var d = new Date(); // который час?
var h = d.getHours(); // час от 0 до 23
var m = d.getMinutes(); // минуты от 0 до 59
var ampm = (h >= 12)?"PM":"AM"; // AM или PM?
if (h > 12) h -= 12; // нам нужно только первые 12
if (h == 0) h = 12; // полночь
if (m < 10) m = "0" + m; // добавить нулей
var t = h + ':' + m + ' ' + ampm; // пусть лежат вместе
defaultStatus = t; // оно!!!
setTimeout("display_time_in_status_line()", 60000);
// делать ту же гадость каждую минуту
}
</SCRIPT>
</HEAD>
<BODY onLoad="display_time_in_status_line();">
<!-- Здесь лежит очень большой и страшный HTML документ -->
</BODY>
</HTML>
Function - немного извращенный метод использования функции. Обычная функция выглядит так:
function mycoolfunction(f)
{
alert(f++);
return --f;
}
а извращенная форма будет так:
var mycoolvar=new Function("f","alert(f++);return --f;");