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

Шрифт
Интервал


>// Функции - это параметризованные блоки программного кода JavaScript,

>// которые можно вызывать многократно.

>function plus1(x) { // Определить функцию с именем "plusr и с параметром "х"

>  return х+1;       // Вернуть значение на 1 больше полученного

>}                   // Функции заключаются в фигурные скобки


>plus1(y) // => 4: у имеет значение 3, поэтому этот вызов вернет 3+1


>var square = function(x) { // Функции можно присваивать переменным

>  return х*х;              // Вычислить значение функции

>};                         // Точка с запятой отмечает конец присваивания.


>square(plus1(y))           // => 16: вызов двух функций в одном выражении


При объединении функций с объектами получаются методы.


>// Функции, присвоенные свойствам объектов, называются методами.

>// Все объекты в JavaScript имеют методы:

>var а = [];    // Создать пустой массив

>а.push(1,2,3); // Метод push() добавляет элементы в массив

>a.reverse();   // Другой метод: переставляет элементы в обратном порядке


>// Можно определять собственные методы. Ключевое слово "this" ссылается на объект,

>// в котором определен метод: в данном случае на массив points,

>points.dist = function() { // Метод вычисления расстояния между точками

>var р1 = this[0];      // Первый элемент массива, относительно которого вызван метод

>var р2 = this[1];      // Второй элемент объекта "this"

>var а = р2.х-р1.х;     // Разность координат X

>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( // Вернуть корень квадратный от x>2 + y>2

>          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 за пределами веб-броузеров.


Рекомендуем почитать
Игродром. Что нужно знать о видеоиграх и игровой культуре

Жизнь современного человека плотно связана с видеоиграми. Даже если вы не играете сами, в вашем окружении наверняка найдутся заядлые геймеры, а новости из индустрии игр зачастую не обходят и вас стороной. Это положение дел приводит к вопросам: а что же такое видеоигры и какое место они занимают в жизни человека? Поиском ответов на них занимается дисциплина game studies. Александр Ветушинский – один из ведущих российских представителей этого направления исследований. Его книга «Игродром» – философское осмысление этапов развития игровой индустрии, анализ.


Выразительный JavaScript

В процессе чтения вы познакомитесь с основами программирования и, в частности, языка JavaScript, а также выполните несколько небольших проектов. Один из самых интересных проектов — создание своего языка программирования.


Flat Assembler 1.64. Мануал программера

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


Справка по SQL

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


Обработка баз данных на Visual Basic.NET

Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000.


Руководство администратора баз данных Informix.

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