Введение

JavaScript - это язык программирования, используемый в составе страниц HTML для увеличения функциональности и возможности взаимодействия с пользователем. Он был разработан фирмой Netscape на базе языка Sun's Java корпорации Sun.

На первый взгляд кажется, что найти информацию по JavaScript несложно. Сначала создается впечатление, что ее можно увидеть везде: на сервере Netscape, в виде электронных руководств и примеров, во многих других местах. Тем не менее разыскать информацию об объектах, операторах, цветах и всем прочем в одном источнике, чтобы она была всегда под рукой, трудно. Настоящая книга и должна восполнить этот пробел.

JavaScript и Jаvа

Прежде всего надо понять, что JavaScript и Java - это совершенно разные вещи. Java представляет собой объектно-ориентированный язык программирования, разработанный фирмой Sun Microsystems и требующий для своего функционирования компилятора и вспомогательных файлов. Зтот язык хорош для программистов с опытом работы на языках типа С++.

Разрабатываемые с помощью Java Development. Kit программы могут работать как законченные приложения либо как встроенные в страницу HTML апплеты. И хотя апплеты встроены в страницы HTML, они хранятся на клиентской машине как отдельные файлы.

JavaScript был разработан в Netscape. Он близок к языку Java в том, что оба содержат некоторый простой набор команд, сходных в своей реализации.

По структуре и синтаксису JavaScript близок к Java, но JavaScript реализует свою функциональность только в составе страницы HTML. Вы не можете разрабатывать апплеты или обособленные приложения с помощью JavaScript - они могут располагаться только внутри страницы HTML и функционируют, будучи загруженными в подходящий броузер типа Netscape Navigator версии 2.0 или более поздней.

Как пользоваться этой книгой

Для упрощения поиска информации в этои книге принято несколько соглашений.

Описания элементов языка имеют одинаковую структуру. После названия элемента и указания его типа (объект, свойство или метод) следует краткое описание способа применения. Далее приводится синтаксис команды.

Некоторые элементы, особенно относящиеся к формам, могут быть реализованы несколькими способами. Основные варианты перечисляются как часть синтаксиса. если предлагается такой синтаксис:
document formName
то к форме, названной user.Info, можно обращаться следующим образом:
docurnent.userInfo

Методы, помеченные звездочкой, являются встроенными и не требуют вызова объекта для своей работы.

Далее следует подробное описание способа использования и примеры программ. В конце приводятся ссылки на имеющиеся в книге описания других элементов языка.
Когда встречается аббревиатура URL, она указывает на полный универсальный адрес ресурса, включающий в себя протокол, адрес сервера и, если необходимо, путь к файлу и имя точки назначения в фаиле.

Обработчики событий

Обработчики событий являются особенной частью языка JavaScript и придают ему основную мощь. Они позволяют прораммисту отслеживать действия пользователя по отношению странице НТML, такие как щелчок мышью на кнопке формы или помещение указателя мыщи над гиперссылкой. Обработчики событий встраиваются в теги HTML, обычно в составе форм, но иногда включаются в описание ссылок.

Практически все, что пользователь может делать со страницей можно отслеживать с помощью обработчиков событий, от движения мьши до выхода из страницы. Например, следующий фрагмент кода выводит строку «Netscape's Home Page» в строке состояния, когда указатель мыши оказывается над гиперссылкой.

<A HREF="home.netscape.com" onMouseOver="window.status='Netscape's Ноmе Page'; return. true">

Функции

Функция представляет собой созданный программистом или встроенный в язык метод, выполняющий какую-то задачу. Она может также вернуть значение, если поместить в нее оператор return. Функции универсальны и не требуют привязки к какому-либо объекту для своей работы. Методы же всегда связаны с объектом.

Как правило, лучше всего помещать определения функций внутри тега . Такой подход гарантирует, что любая функция будет загружена в память и «готова к употреблению» прежде, чем пользователь сможет произвести какие-либо действия, вызывающие эту функцию.

Иерархия обьектов

Среди объектов существуют определенные взаимоотношения. Например, объекты Navigator имеют структуру, отражающую структуру страницы HTML. Такие взаимоотношения называются иерархией экземпляров, так как эта иерархия работает только с конкретными экземплярами объектов, а не с абстрактными классами.

Объект window является родительским по отношению ко всем остальным объектам Navigator. Прямыми потомками объекта window являются объекты locatiоп, history, document. Объекты forrns, links, anchors являются дочерними для объекта document. Каждый обьект является потомком объекта более высокого уровня. Форма с названием order.Form является объектом и в то же время свойством объекта document. Таким образом, для вызова такой формы используется выражение document.orderForm.

Иерархию объектов языка JavaScript можно сопоставить с иерархией объектов в реальном мире. Колеса, руль и педали - это все объекты, принадлежащие велосипеду. Велосипед представляет собой объект, принадлежащий к средствам наземного транспора, который в свою очередь принадлежат к более общей категории средств передвижения.

В терминах объектов JavaScript эти взаимоотношения могли бы быть выражены следующим образом:
travelMode.grourndTransport.bicycle.handleBears

Наиболее общий объект высшего уровня находится слева в выражении, и слева направо происходит переход к более частным объектам, являющимся при этом наследниками высших в иерархии объектов.

Java

По выражению Sun Microsystems, «Jаvа представляет собой простую, удобную, объектно-ориентированную, платформонезависимую, многопоточную, динамичную, многоцелевую среду программирования». Все эти громкие слова подразумевают, что Java идеально подходит для создания апплетов и приложений для Internet, для сетей intranet и для других сложных распределенных сетей.

Будучи однажды скомпилированным, исходный код на языке Java может исполняться на компьютере с любой операционной системой - Windows 95, Solaris, Macintosh или любой другой, лишь бы на машине имелся интерпретатор Java. Программирование на Java требует наличия Java Development Kit с компилятором и набором базовых классов, созданных фирмой Sun или третьей фирмой, например Symantec.

JavaScript

JavaScript является интерпретируемым языком для документов HTML, разработанным фирмой Netscape в сотрудничестве с Sun Microsystems. Сценарии (scripts) выполняются в результате наступления каких-либо событий, инициированных действиями пользователя. Создание Web-документов, включающих программы на JavaScript, требует наличия текстового редактора и подходящего броузера. Броузер Netscape Gold включает в себя встроенный редактор, так что нужда во внешнем редакторе отпадает.

Несмотря на отсутствие прямои связи с языком Java, JavaScript может обращаться к внешним своиствам и методам Java-апплетов, встроенных в страницу HTML. Разница сводится к тому, что апплеты существуют вне броузера, в то время как программы JavaScript могут работать только внутри броузера.

Литералы

Литералом называется значение, которое можно присвоить переменной. Литералы не могут измениться. Примерами литералов являются 1, 3.1415927, «Bob» и true.
Некоторым типам литералов в JavaScript соответствуют типы переменных.

Целые числа

Целыми называются числа типа 1, 16 и 25896. Они могут быть выражены в десятичном (по основанию 10), шестнадцатеричном (по основанию 16) или восьмеричном (по основанию 8) представлении.

Шестнадцатеричные числа включают цифры 0-9 и буквы а-f, в JavaScript они записываются с комбинацией символов 0х (ноль-х) перед числом. Восьмеричные числа включают только цифры 0 - 7 и в JavaScript записываются с ведущего нуля.

Например, десятичное число 23 представляется в шестнадцатеричном виде как Ох17 и в восьмеричном как 027.

Числа с плавающей точкой

Числа с плавающей точкой представляют собой дробные части целых чисел и должны включать в себя по крайней мере одну цифру и десятичную точку либо символ экспоненты («е» или «E»). В следующих примерах приведены различные варианты представления одного и того же числа:
3.1415927
3145927e-7
.3141527Е1

Логические литералы

Логическиелитералы имеюттолькодва значения, true (истина) или f alse (ложь). В некоторых реализациях языка JavaScript 0 (false) и 1 (true) не могут быть использованы в качестве логических значений. Текущие версии Netscape Navigator и Netscape Navigator Gold обе поддерживают 0 и 1 как логические false и true.

Строки

Строки определяются как любое количество символов, окруженных одинарными или двойными кавычками. Использование обратной косой черты «~» позволяет вставлять в строку специальные символы.
document.write("~Вам следует принять ванну~", сказал доктор и наморшил нос.") выводит
"Вам следует принять ванну", - сказал доктор и наморщил нос.

Методы

Метод представляет собой функцию, ассоциированную с объектом. Например, userName. toUpperCase () возвращает строку, содержащуюся в переменной userName, преобразованную к верхнему регистру.

Обьекты

Объектом называется структура, имеющая свойства (properties), представляющие собой переменные JavaScript или другие объекты. Функции, ассоциированные с объектом, называются методами обьекта. Обращение к свойствам и методам осуществляется просто:
objectName.propertyName
objectName.methodName
Все имена чувствительны к регистру.

Бсли объект с названием house имеет свойства bedrooms, bathrooms, floors и squareFeet, вы можете обращаться к их значениям:
house.bedrooms
house.bathrooms
house.floors
house.squareFeet

Другим способом представления объектов является запись их как массивов;
house["bedrooms"]
house['bathrooms"]
house["floors"j
house["squareFeet"]

Этот же объект может быть представлен в JavaScript и как обычный массив:
house [0]
house[1)
house[2]
house[3]

Такой тип взаимоотношений между индексами и строками называется ассоциативным массивом.

Создание нового объекта требует вызова функции-конструктора объекта. Например, следующая функция должна создавать новый экземпляр обьекта house:
function House (bedrooms, bathrooms, floors, squareFeet)
{
this.bedrooms = bedrooms;
this.bathrooms = bathrooms;
this.floors = floors;
this.squareFeet = sqareFeet
}

Теперь, когда объект определен, его экземпляр создается с помощью оператора nеw.
500South5th = new House(2, 1, 1, 1700)

В определение обьекта могут быть включены другие об'екты Например, объект с названием owner имеет свойства name, age, mortgageLength.
function Owner (name, age, rnortgageLenqth)
{
this.name = name;
this.age = age;
this.mortgageLenatl, = mortgageLength
}

Добавление дополнительного аргумента и строки кода в функцию House добавляет объект owner к объекту house:
function House(bedrooms, bathroorns, floors, squarFeet, owner)
{
this.bedrooms = bedrooms;
this.bathrooms = bathrooms;
this.floors = flosrs;
this.squareFeet = squareFeet;
this.owner = owner;
}

Новый экземпляр объекта owner (Glenn Woodson, 38 лет, со сроком закладной в 20 лет), представленный переменной G_Woodson, включен в объект house:
G_Woodson = new Owner("Glenn Noodson",38,20);
500South5th = new House(2, 1, 1, 1700, G Woodson)

Свойства объекта G_Woodson включены в объект 500South5th:
500South5th.bedrooms
500South5th.bathrooms
500South5th.floors
500South5th.squareFeet
500South5th.G_Woodson.name
500South5th.G_Woodson.age
500South5th.G Noodson.mortgageLength

Операторы

Оператор производит действия над одним или несколькими операндами или переменными. Операторы делятся на две основные группы: унарные и бинарные. Бинарные операторы требуют двух операндов, а унарные имеют дело только с одним операндом.
Например, оператор сложения является бинарным оператоpом:
sum = 1 + 5
Унарные операторы часто используются для обновления значений счетчиков. Следующий пример увеличивает переменную счетчика на единицу:
counter++

Свойства

Свойства используются для описания объекта или его текущего состояния. Свойство определяется путем присваивания ему значения. Значение может быть присвоено броузером, программой или действиями пользователя.

Несколько свойств e JavaScript содержат константы-значения, которые никогда не меняются. Такими являются значения числа л или основания натуральных логарифмов (е). Другие элементы, например элементы формы, различаются от страницы к cтранице, но не могут быть изменены в пределах одной страницы.

Сценарии

Одна или несколько команд JavaScript могут быть помещены в тег <SCRIPT>. Сосуществование нескольких вспомогательных языков программирования для расширения возможностей языка HTML сделало необходимым сообщать броузеру, какой же язык используется в данном конкретном случае. Для lavaScript синтаксис таков:

<SCRIPT LANGUAGE="JavaScript">
<! - -
...Строки кода...
// -->
</SCRIPT>

Использование атрибута LANGUAGE в броузерах Netscape пока что не обязательно, но это положение может измениться, если будет реализована поддержка других языков, например VBScript фирмы Microsoft.

Обратите внимание на использование тегов комментария HTML <! - - и -- >Если страница, содержащая сценарий, будет загружена в броузер, не поддерживающий языки сценариев, строки программы будут выведены на экран как обычный текст, засоряя экран

Если же использовать тег комментария, такой броузер пропустит текст программы, воспринимая его как комментарий. Двойная косая черта перед закрывающим текст JavaScript-программы тегом комментария гарантирует, что тег не будет воспринят броузером как оператор JavaScript.

Замена типов данных

Тип переменной зависит от того, какой тип информации в ней хранится (см. раздел «Литералы»). JavaScript не является жестко типизированным языком, то есть нет необходимости объявлять тип переменной в момент ее создания. Тип переменной присваивается переменной автоматически в зависимости от литерала, присвоенного переменной. Взгляните на следующие выражения:

//пример 1
var oneString = "1"
var oneInt = 1
var oneConcatenate = oneString + oneInt
//В результате получается "11"
vаг oneAddition =- oneInt + oneString
// В результате получается 2

В первой операции сложения первый операнд является строкой. JavaScript предполагает, что производится операция с двумя строками. Когда JavaScript обнаруживает в качестве второго операнда целое число, он в соответствии со своими представлениями преобразует переменную в строку.

Так как JavaScript не поддерживает никаких методов и свойств для определения типа текущегс значения переменной, очень важно внимательно отслеживать типы переменных во избежание неожиданных результатов.

<<Назад     Содержание     Далее>>

Hosted by uCoz