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

<b>  }                     // Конец цикла</b>

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

<b>}</b>

<b>factorial(4)            // =&gt; 24: 1*4*3*2</b>

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

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

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

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

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

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

<b>}</b>

<b>factorial2(5)            // =&gt; 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>// с ключевым словом &quot;new&quot;</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()       // =&gt; 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>&lt;html&gt;</b>

<b>  &lt;head&gt;</b>

<b>    &lt;script src=&quot;library.js&quot;&gt;&lt;/script&gt; &lt;!-- подключить библиотеку JavaScript --&gt;</b>

<b>  &lt;/head&gt;</b>

<b>  &lt;body&gt;</b>

<b>    &lt;р&gt;Это абзац HTML&lt;/p&gt;</b>

<b>    &lt;script&gt;</b>

<b>      // Это некоторый программный код на клиентском JavaScript,</b>

<b>      // встроенный непосредственно в HTML-файл </b>

<b>    &lt;/script&gt;</b>

<b>    &lt;р&gt;Далее опять следует разметка HTML.&lt;/р&gt; </b>

<b>  &lt;/body&gt;</b>

<b>&lt;/html&gt;</b>

Глава 14 «Объект Window» исследует приемы управления веб-броузером и описывает некоторые наиболее важные глобальные функции клиентского JavaScript. Например:

<b>&lt;script&gt;</b>

<b>function moveon() {</b>

<b>  // Вывести модальный диалог, чтобы получить ответ пользователя </b>