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

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

>

>  graph.width = graph.width; // Магия очистки элемента canvas


>  // Если функция вызвана без аргументов или броузер не поддерживает

>  // элемент , то просто вернуть управление,

>  if (arguments.length == 0 || !graph.getContext) return;


>  // Получить объект "контекста" для элемента ,

>  // который определяет набор методов рисования

>  var g = graph.getContext("2d"); // Рисование выполняется с помощью этого объекта

>  var width = graph.width, height = graph.height; // Получить размер холста


>  // Следующие функции преобразуют количество месячных платежей

>  // и денежные суммы в пикселы

>  function paymentToX(n) { return n * width/payments; }

>  function amountToY(a) { return height-(a*height/(monthly*payments*1.05));}


>  // Платежи - прямая линия из точки (0,0) в точку (payments,monthly*payments)

>  g.moveTo(paymentToX(0), amountToY(0)); // Из нижнего левого угла

>  g.lineTo(paymentToX(payments),         // В правый верхний

>     amountToY(monthly*payments));

>  g.lineTo(paymentToX(payments), amountToY(0)); // В правый нижний

>  g.closePath();                         // И обратно в начало

>  g.fillStyle = "#f88";                  // Светло-красный

>  g.fill();                              // Залить треугольник

>  g.font = "bold 12px sans-serif";       // Определить шрифт

>  g.fillText("Total Interest Payments", 20,20); // Вывести текст в легенде


>  // Кривая накопленной суммы погашения кредита не является линейной

>  // и вывод ее реализуется немного сложнее

>  var equity = 0;

>  g.beginPath(); // Новая фигура

>  g.moveTo(paymentToX(0), amountToY(O)); // из левого нижнего угла

>  for(var р = 1; р <= payments; р++) {

>    // Для каждого платежа выяснить долю выплат по процентам

>    var thisMonthsInterest = (principal-equity)*interest;

>    equity += (monthly - thisMonthsInterest);  // Остаток - погашение кред.

>    g.lineTo(paymentToX(p),amountToY(equity)); // Линию до этой точки

>  }

>  g.lineTo(paymentToX(payments), amountToY(O)); // Линию до оси X

>  g.closePath();                                // И опять в нач. точку

>  g.fillStyle = "green";                        // Зеленый цвет

>  g.fill();                                     // Залить обл. под кривой

>  g.fillText("Total Equity", 20,35);            // Надпись зеленым цветом


>  // Повторить цикл, как выше, но нарисовать график остатка по кредиту

>  var bal = principal;

>  g.beginPath();

>  g.moveTo(paymentToX(O),amountToY(bal));

>  for(var p = 1; p <= payments; p++) {

>    var thisMonthsInterest = bal*interest;

>    bal -= (monthly - thisMonthsInterest) //Остаток от погаш. по кредиту

>    g.lineTo(paymentToX(p),amountToY(bal)); // Линию до этой точки

>  }

>  g.LineWidth = 3;     //Жирная линия

>  g.stroke;            //Нарисовать кривую графика

>  g.fillStle="black";  //Черный цвет для текста

>  g.fillText("Loan Balabce", 20, 50); //Элемент легенды


>  //Нарисовать отметки лет на оси Х

>  g.textAling="center"; //Текст меток по центру

>  var y = amounToY(0); //Координата Y на оси X

>  for (var year=1;year*12 <= payments; year++) { //Для каждого года

>    var x=paymentToX(year*12); //Вычислить позицию метки

>    g.fillRect(x-0.5, y-3, 1, 3); //Нарисовать метку


>    if (year == 1) g.fillText("Year", x, y-5); //  Подписать ось

>    if (year % 5 == 0 && year*12 !== payments) // Числа через каждые 5 лет

>              g.fillText(String(year), x, y-5);

>  }


>  //Суммы платежей у правой границы

>  g.textAling="right";      //Текст по правому краю

>  g.textBaseLine="middle";  //Центрировать по вертикали

>  var ticks = [monthly*payments, principal]; //Вывести две суммы

>  var rightEdge = paymentToX(payments);      //Координата X на оси Y

>  for (var i = 0; i < ticks.Length; i++) {   //Для каждой из 2 сумм

>    var y = amountToY(ticks[i]);              //Определить координату Y

>    g.fillRect(rightEdge - 3, y - 0.5, 3, 1); //Нарисовать метку

>    g.fillText(String(ticks[i].toFixed(0)),    //И вывести рядом сумму.

>              rightEdge-5, y);

>  }

>}

>

>

>


I

Базовый JavaScript

Данная часть книги включает главы со 2 по 12, она описывает базовый язык JavaScript и задумана как справочник по языку JavaScript. Прочитав главы этой части один раз, вы, возможно, будете неоднократно возвращаться к ним, чтобы освежить в памяти более сложные особенности языка.

• Глава 2 «Лексическая структура»

• Глава 3 «Типы данных, значения и переменные»

• Глава 4 «Выражения и операторы»

• Глава 5 «Инструкции»

• Глава 6 «Объекты»

• Глава 7 «Массивы»

• Глава 8 «Функции»

• Глава 9 «Классы и модули»

• Глава 10 «Шаблоны и регулярные выражения»

• Глава 11 «Подмножества и расширения JavaScript»

• Глава 12 «Серверный JavaScript»

2

Лексическая структура

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

2.1. Набор символов

При написании программ на JavaScript используется набор символов Юникода. Юникод является надмножеством кодировок ASCII и Latin-І и поддерживает практически все письменные языки, имеющиеся на планете. Стандарт ЕСМА-Script 3 требует, чтобы реализации JavaScript обеспечивали поддержку стандарта Юникода версии 2.1 или выше, а стандарт ECMAScript 5 требует, чтобы реализации обеспечивали поддержку стандарта Юникода версии 3 или выше. Более подробно о Юникоде и JavaScript говорится во врезке в разделе 3.2.


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

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


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

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


Работа с данными в любой сфере

Что общего у аналитика данных и Шерлока Холмса? Как у Netflix получилось создать 100 %-ный хит – сериал «Карточный домик»? Ответ кроется в правильном использовании данных. Эта книга – практическое руководство и увлекательное путешествие в науку о данных, независимо от того, хотите ли вы использовать анализ данных в своей профессии, собираетесь ли стать аналитиком данных, или уже работаете в этой области. Ее автор, основатель образовательного онлайн-портала и консультант, Кирилл Еременко просто и понятно рассказывает об основных методах, алгоритмах и приемах, которые вам помогут на любом этапе: от сбора данных и их анализа до визуализации полученных результатов.


S. D. F.

Если вам интересен SQL, и знаком Delphi, давайте поразвлекаемся программированием.


Справка по SQL

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


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

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