JavaScript. Подробное руководство, 6-е издание, стр. 6
<b> } // Конец цикла</b><b> return product; // Вернуть произведение</b><b>}</b><b>factorial(4) // => 24: 1*4*3*2</b><b>function factorial2(n) { // Другая версия, использующая другой цикл</b><b> var і, product = 1; // Начать с 1</b><b> for(i=2; і <= n; i++) // і автоматически увеличивается с 2 до n</b><b> product *= i; // Выполнять в каждом цикле. {} можно опустить,</b><b> // если тело цикла состоит из 1 инструкции</b><b> return product; // Вернуть факториал</b><b>}</b><b>factorial2(5) // => 120: 1*2*3*4*5</b>JavaScript - объектно-ориентированный язык, но используемая в нем объектная модель в корне отличается от модели, используемой в большинстве других языков. В главе 9 «Классы и модули» детально рассматривается объектно-ориентированное программирование на языке JavaScript на большом количестве примеров; эта глава является одной из самых больших в книге. Ниже приводится очень простой пример, демонстрирующий определение класса JavaScript для представления точек на плоскости. Объекты, являющиеся экземплярами этого класса, обладают единственным методом с методом r(), который вычисляет расстояние между данной точкой и началом координат:
<b>// Определение функции-конструктора для инициализации нового объекта Point</b><b>function Point(x,y) { // По соглашению имя конструкторов начинается с заглавного символа </b><b> this.x = x; // this - ссылка на инициализируемый объект</b><b> this.у = у; // Сохранить аргументы в свойствах объекта</b><b>} // Ничего возвращать не требуется</b><b>// Чтобы создать новый экземпляр, необходимо вызвать функцию-конструктор </b><b>// с ключевым словом "new"</b><b>var р = new Point(1, 1); // Точка на плоскости с координатами (1,1)</b><b>// Методы объектов Point определяются за счет присваивания функций свойствам </b><b>// объекта-прототипа, ассоциированного с функцией-конструктором.</b><b>Point.prototype.r = function() {</b><b> return Math.sqrt( // Вернуть корень квадратный от x<sup>2</sup> + y<sup>2</sup></b><b> this.x * this.x + // this - это объект Point, относительно которого... </b><b> this.у * this.у // ...вызывается метод.</b><b> );</b><b>};</b><b>// Теперь объект p типа Point (и все последующие объекты Point) наследует метод r()</b><b>p.r() // => 1.414...</b>Глава 9 является кульминацией первой части, а главы, которые следуют за ней, связывают некоторые оборванные концы и завершают исследование базового языка. В главе 10 «Шаблоны и регулярные выражения» описывается грамматика регулярных выражений и демонстрируются приемы использования регулярных выражений для реализации сопоставления с текстовыми шаблонами. В главе 11 «Подмножества и расширения JavaScript» рассматриваются подмножества и расширения базового языка JavaScript. Наконец, прежде чем перейти к исследованию клиентского JavaScript в веб-броузерах, в главе 12 «Серверный JavaScript» будут представлены два способа использования JavaScript за пределами веб-броузеров.
1.2. Клиентский JavaScript
Изучение клиентского JavaScript представляет собой задачу, нелинейную из-за перекрестных ссылок в значительно меньшей мере, чем базовый язык, и поэтому вполне возможно изучать особенности использования JavaScript в веб-броузерах в линейном порядке. Возможно, вы взялись за чтение этой книги, чтобы изучить клиентский JavaScript - тему далекой второй части, поэтому здесь мы приводим краткий обзор основных приемов программирования клиентских сценариев, который сопровождается подробным примером.
Глава 13 «JavaScript в веб-броузерах» является первой главой второй части, в которой описываются детали использования JavaScript в веб-броузерах. Самое важное, что вы узнаете в этой главе, - программный код JavaScript может встраиваться в HTML-файлы с помощью тега <script>:
<b><html></b><b> <head></b><b> <script src="library.js"></script> <!-- подключить библиотеку JavaScript --></b><b> </head></b><b> <body></b><b> <р>Это абзац HTML</p></b><b> <script></b><b> // Это некоторый программный код на клиентском JavaScript,</b><b> // встроенный непосредственно в HTML-файл </b><b> </script></b><b> <р>Далее опять следует разметка HTML.</р> </b><b> </body></b><b></html></b>Глава 14 «Объект Window» исследует приемы управления веб-броузером и описывает некоторые наиболее важные глобальные функции клиентского JavaScript. Например:
<b><script></b><b>function moveon() {</b><b> // Вывести модальный диалог, чтобы получить ответ пользователя </b>