Чтение онлайн

ЖАНРЫ

JavaScript. Подробное руководство, 6-е издание
Шрифт:

var b = р2.у-р1.у; // Разность координат Y

return Math.sqrt(a*a + // Теорема Пифагора

b*b); // Math.sqrtO вычисляет корень квадратный

};

points.dist // => 1.414: расстояние между 2-мя точками

Теперь, как было обещано, рассмотрим несколько функций, которые демонстрируют применение наиболее часто используемых управляющих инструкций JavaScript:

//
В JavaScript имеются условные инструкции и инструкции циклов, синтаксически

// похожие на аналогичные инструкции С, C++, Java и в других языках.

function abs(x) { // Функция, вычисляющая абсолютное значение

if (х >= 0) { // Инструкция if ...

return х; // выполняет этот код, если сравнение дает true.

} // Конец предложения if.

else { // Необязательное предложение else выполняет свой код,

return -x; // если сравнение дает значение false.

} // Фигурные скобки можно опустить, если предложение

// содержит 1 инструкцию.

} // Обратите внимание на инструкции return внутри if/else.

function factorial(n) { // Функция, вычисляющая факториал

var product = 1; // Начать с произведения, равного 1

while(n > 1) { // Повторять инструкции в {}, пока выраж. в истинно

product *= n; // Сокращенная форма выражения product = product * n;

n--; // Сокращенная форма выражения n = п - 1

} // Конец цикла

return product; // Вернуть произведение

}

factorial(4) // => 24: 1*4*3*2

function factorial2(n) { // Другая версия, использующая другой цикл

var і, product = 1; // Начать с 1

for(i=2; і <= n; i++) // і автоматически увеличивается с 2 до n

product *= i; // Выполнять в каждом цикле. {} можно опустить,

// если тело цикла состоит из 1 инструкции

return product; // Вернуть факториал

}

factorial2(5) // => 120: 1*2*3*4*5

JavaScript - объектно-ориентированный язык, но используемая в нем объектная модель в корне отличается от модели, используемой в большинстве других языков. В главе 9 «Классы и модули» детально рассматривается объектно-ориентированное программирование на языке JavaScript на большом количестве примеров; эта глава является одной из самых больших в книге. Ниже приводится очень простой

пример, демонстрирующий определение класса JavaScript для представления точек на плоскости. Объекты, являющиеся экземплярами этого класса, обладают единственным методом с методом r, который вычисляет расстояние между данной точкой и началом координат:

// Определение функции-конструктора для инициализации нового объекта Point

function Point(x,y) { // По соглашению имя конструкторов начинается с заглавного символа

this.x = x; // this - ссылка на инициализируемый объект

this.у = у; // Сохранить аргументы в свойствах объекта

} // Ничего возвращать не требуется

// Чтобы создать новый экземпляр, необходимо вызвать функцию-конструктор

// с ключевым словом "new"

var р = new Point(1, 1); // Точка на плоскости с координатами (1,1)

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

// объекта-прототипа, ассоциированного с функцией-конструктором.

Point.prototype.r = function {

return Math.sqrt( // Вернуть корень квадратный от x2 + y2

this.x * this.x + // this - это объект Point, относительно которого...

this.у * this.у // ...вызывается метод.

);

};

// Теперь объект p типа Point (и все последующие объекты Point) наследует метод r

p.r // => 1.414...

Глава 9 является кульминацией первой части, а главы, которые следуют за ней, связывают некоторые оборванные концы и завершают исследование базового языка. В главе 10 «Шаблоны и регулярные выражения» описывается грамматика регулярных выражений и демонстрируются приемы использования регулярных выражений для реализации сопоставления с текстовыми шаблонами. В главе 11 «Подмножества и расширения JavaScript» рассматриваются подмножества и расширения базового языка JavaScript. Наконец, прежде чем перейти к исследованию клиентского JavaScript в веб-броузерах, в главе 12 «Серверный JavaScript» будут представлены два способа использования JavaScript за пределами веб-броузеров.

1.2. Клиентский JavaScript

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

Поделиться с друзьями: