| JavaScript. Руководство. |
| 1 | Все объекты в JavaScript имеют методы: var a = []; // Создать пустой массив a.push(1,2,3); // Метод push() добавляет элементы в массив a.reverse(); // Другой метод: переставляет элементы в обратном порядке // Можно определять собственные методы. Ключевое слово "this" ссылается на объект, // в котором определен метод: в данном случае на массив points. points.dist = function() { // Метод вычисления расстояния между точками var p1 = this[0]; // Первый элемент массива, относительно которого вызван метод var p2 = this[1]; // Второй элемент объекта "this" var a = p2.x-p1.x; // Разность координат X var b = p2.y-p1.y; // Разность координат Y return Math.sqrt(a*a + // Теорема Пифагора b*b); // Math.sqrt() вычисляет корень квадратный }; points.dist() // => 1.414: расстояние между 2-мя точками Теперь, как было обещано, рассмотрим несколько функций, которые демонстрируют применение наиболее часто используемых управляющих инструкций JavaScript: // В JavaScript имеются условные инструкции и инструкции циклов, синтаксически // похожие на аналогичные инструкции C, C++, Java и в других языках. |
| 2 | function abs(x) { // Функция, вычисляющая абсолютное значение if (x >= 0) { // Инструкция if ... return x; // выполняет этот код, если сравнение дает true. } // Конец предложения if. else { // Необязательное предложение else выполняет свой код, return -x; // если сравнение дает значение false. } // Фигурные скобки можно опустить, если предложение // содержит 1 инструкцию. } // Обратите внимание на инструкции return внутри if/else. |
| 3 | function factorial(n) { // Функция, вычисляющая факториал var product = 1; // Начать с произведения, равного 1 while(n > 1) { // Повторять инструкции в {}, пока выраж. в () истинно product *= n; // Сокращенная форма выражения product = product * n; n--; // Сокращенная форма выражения n = n - 1 } // Конец цикла return product; // Вернуть произведение } factorial(4) // => 24: 1*4*3*2 function factorial2(n) { // Другая версия, использующая другой цикл var i, product = 1; // Начать с 1 for(i=2; i <= n; i++) // i автоматически увеличивается с 2 до n product *= i; // Выполнять в каждом цикле. {} можно опустить, // если тело цикла состоит из 1 инструкции return product; // Вернуть факториал } factorial2(5) // => 120: 1*2*3*4*5 JavaScript – объектно-ориентированный язык, но используемая в нем объектная модель в корне отличается от модели, используемой в большинстве других языков. |
| 4 | В главе 9 «Классы и модули» детально рассматривается объектно-ориентированное программирование на языке JavaScript на большом количестве примеров; эта глава является одной из самых больших в книге. Ниже приводится очень простой пример, демонстрирующий определение класса JavaScript для представления точек на плоскости. Объекты, являющиеся экземплярами этого класса, обладают единственным методом с методом r(), который вычисляет расстояние между данной точкой и началом координат: // Определение функции-конструктора для инициализации нового объекта Point function Point(x,y) { // По соглашению имя конструкторов начинается с заглавного символа this.x = x; // this - ссылка на инициализируемый объект this.y = y; // Сохранить аргументы в свойствах объекта } // Ничего возвращать не требуется // Чтобы создать новый экземпляр, необходимо вызвать функцию-конструктор // с ключевым словом "new" var p = new Point(1, 1); // Точка на плоскости с координатами (1,1) // Методы объектов Point определяются за счет присваивания функций свойствам // объекта-прототипа, ассоциированного с функцией-конструктором. |
| 5 | Point.prototype.r = function() { return Math.sqrt( // Вернуть корень квадратный от x2 + y2 this.x * this.x + // this - это объект Point, относительно которого... this.y * this.y // ...вызывается метод. ); }; // Теперь объект p типа Point (и все последующие объекты Point) наследует метод r() p.r() // => 1.414... Глава 9 является кульминацией первой части, а главы, которые следуют за ней, связывают некоторые оборванные концы и завершают исследование базового языка. |
| 6 | В главе 10 «Шаблоны и регулярные выражения» описывается грамматика регулярных выражений и демонстрируются приемы использования регулярных выражений для реализации сопоставления с текстовыми шаблонами. В главе 11 «Подмножества и расширения JavaScript» рассматриваются подмножества и расширения базового языка JavaScript. Наконец, прежде чем перейти к исследованию клиентского JavaScript в веб-броузерах, в главе 12 «Серверный JavaScript» будут представлены два способа использования JavaScript за пределами веб-броузеров. |
| 7 | 1.2. Клиентский JavaScript Изучение клиентского JavaScript представляет собой задачу, нелинейную из-за перекрестных ссылок в значительно меньшей мере, чем базовый язык, и поэтому вполне возможно изучать особенности использования JavaScript в веб-броузерах в линейном порядке. Возможно, вы взялись за чтение этой книги, чтобы изучить клиентский JavaScript – тему далекой второй части, поэтому здесь мы приводим краткий обзор основных приемов программирования клиентских сценариев, который сопровождается подробным примером. |
| 8 | Глава 13 «JavaScript в веб-броузерах» является первой главой второй части, в которой описываются детали использования JavaScript в веб-броузерах. Самое важное, что вы узнаете в этой главе, – программный код JavaScript может встраиваться в HTML-файлы с помощью тега <script>: <html> <head> <script src="library.js"></script> <!-- подключить библиотеку JavaScript --> </head> <body> <p>Это абзац HTML</p> <script> // Это некоторый программный код на клиентском JavaScript, // встроенный непосредственно в HTML-файл </script> <p>Далее опять следует разметка HTML.</p> </body> </html> Глава 14 «Объект Window» исследует приемы управления веб-броузером и описывает некоторые наиболее важные глобальные функции клиентского JavaScript. |
| 9 | Например: <script> function moveon() { // Вывести модальный диалог, чтобы получить ответ пользователя var answer = confirm("Ready to move on?"); // Если пользователь щелкнул на кнопке "OK", заставить броузер загрузить новую страницу if (answer) window.location = "http://google.com"; } // Запустить функцию, объявленную выше, через 1 минуту (60000 миллисекунд). setTimeout(moveon, 60000); </script> Обратите внимание, что примеры программного кода на клиентском JavaScript в этом разделе длиннее примеров на базовом языке, которые мы видели выше в этой главе. |
| 10 | Эти примеры не предназначены для ввода в окне консоли Firebug (или в другом подобном инструменте). Однако вы можете вставлять их в HTML-файлы и затем запускать, открывая файлы в веб-броузере. Так, пример, приведенный выше, является самостоятельным HTML-файлом. Глава 15 «Работа с документами» переходит к исследованию фактической работы, выполняемой с помощью JavaScript на стороне клиента, – управлению содержимым документа HTML. |
| … |
Комментарии