Презентация "Язык Javascript"

Подписи к слайдам:
Язык Javascript
  • По материалам курса University of Washington http://www.cs.washington.edu/education/courses/cse190m/07sp/index.shtml
Краткое введение в Javascript
  • Javascript это:
  • Интерпретируемый язык. Его интерпретатор обычно встроен в браузер.
  • Основное назначение – определять «динамическое» поведение страниц при загрузке (формирование страницы перед ее открытием) и при работе пользователя со страницей (UI элементы).
  • Текст на Javascript может быть вложен в HTML-страницу непосредственно или находиться в отдельном файле (как CSS).
  • Похож на языки Java и C# синтаксически, но сильно отличается от них по внутреннему содержанию.
Характеристика Javascript
  • Некоторые важнейшие характеристики Javascript :
  • Язык объектно-ориентированного программирования. Объекты в языке имеют «тип», «атрибуты» и «методы»
  • "John,Jane,Paul,Michael".split(",").length
  • Переменные не имеют заранее заданного типа, то есть в разные моменты времени могут содержать значения разных типов
  • var number = 25; number = (number < 0); number = "25";
  • Типы объектов могут быть: number, string, function, object, undefined. Оператор typeof позволяет «вычислить» тип объекта.
  • typeof 25 == "number" typeof null == "object"
Основные встроенные типы
  • Типы, встроенные в язык, это:
  • Есть набор встроенных «классов», порождающих «объекты», различающиеся набором атрибутов и методов. Программисты могут динамически изменять поведение этих «классов» и создавать свои собственные. Каждый «класс» является объектом, у которого есть «прототип», определяющий набор атрибутов и методов у всех вновь создаваемых объектов этого класса.
  • - Number : 64-х-разрядные числа с плавающей точкой.
  • - String : строки с символами в формате Unicode.
  • - Array : массивы с переменными границами.
  • - Function : Функции. Каждая функция, кроме того, может служить
  • конструктором объекта.
  • - Boolean, Date, Math, RegExp : логические значения, даты,…
Некоторые сведения о синтаксисе
  • Операции такие же, как в Java и C#, но более широко используется преобразование типов
  • Описание переменных:
  • var count = 25, msg = 'Сообщение об ошибке';
  • var nullVar; // получает начальное значение null
  • + - * / % ++ -- = += -= *=
  • /= %= == != > < >= <= && || !
  • 2 + '3' == '23', но 2 + 3 == 5
  • Многие операторы очень похожи на соответствующие операторы Java и C#, но могут иметь некоторые отличия в семантике.
  • for (var i = 0; i < 100; ++i) { ... }
  • if (x * y < 100) { ... } else { ... }
  • try { ... } catch (e) { ... } finally { ... }
Объекты, встроенные в браузеры
  • При программировании можно использовать ряд встроенных объектов. Основные из них это:
  • - window : представляет «глобальный контекст» и позволяет работать с атрибутами и методами окна.
  • - document : загруженная страница со своей структурой элементов.
  • - navigator : объект, представляющий браузер и его свойства.
  • - location : характеристики текущего URL (порт, хост и т.п.).
  • - объекты, представляющие элементы различных типов в HTML-странице, такие как <body>, <link>, <img> и т.п.
  • - события (events), возникающие от действий пользователя, например, нажатие кнопки мыши (click), загрузка новой страницы (load) и т.д.
Включение Javascript в HTML-страницу
  • Фрагменты кода можно включать в заголовок или тело HTML-документа.
  • Кроме того, можно разместить код в отдельном файле, а в HTML-странице разместить ссылку на этот файл.
  • <html>
  • <head> <script type="text/javascript"> ... </script>
  • <script type="text/javascript" src="scripts/myscript1.js/>
  • <head>
  • <body>
  • <script type="text/javascript"> ... </script>
  • <script type="text/javascript" src="scripts/myscript2.js/>
  • </body>
  • </html>
  • Код, ссылки на который размещены в заголовке, просто подсоединяется к странице и может быть использован, например, для определения реакций на пользовательские события.
  • Код, ссылки на который размещены в теле, исполняется при загрузке страницы и может непосредственно использоваться для формирования
  • содержания страницы во время загрузки.
Два простых примера
  • Метод document.write используется для непосредственного включения HTML-текста в содержимое страницы, например, можно сгенерировать длинный текст в параграфе:
  • <body> <p>
  • <script type="text/javascript">
  • for (var i = 0; i < 100; ++i) {
  • document.write("Hello, world! ");
  • }
  • </script>
  • </p> </body>
  • для лекции javascript\helloworld.html
Два простых примера (продолжение)
  • Во втором примере датчик случайных чисел используется для генерации случайной ссылки (из заданного набора):
  • <body>
  • <p>
  • <script type="text/javascript">
  • var rand = Math.random(); // в диапазоне: [0, 1)
  • var numb = Math.floor(rand * 10);
  • var image = "images/image" + numb + ".jpg";
  • var insert = "<img class=\"floatRight\" src=\"" +
  • image + "\" alt=\"Фотография цветочка\"/>";
  • document.write(insert);
  • </script>
  • </p>
  • </body>
  • для лекции javascript\randomPicture.html
Тип String
  • Строки заключаются либо в апострофы, либо в двойные кавычки
  • var slogan = "Don't be evil!";
  • var image ='<img class="to-right" src="myphoto.jpg"/>';
  • Операции над строками: + < > == !=
  • "2" + "3"
  • "23"
  • "10" < "5"
  • true
  • 10 < "5"
  • false
  • "a" = = "A"
  • false
  • 5 = = "5"
  • true
  • 5 = = = "5"
  • false
  • Атрибут строки: length – длина строки.
  • "abc".length == 3
  • 5 + "5"
  • "55"
  • Преобразования типов: String(n) Number(s)
  • String(10) < "5" == true
  • Number('3.' + '14') == 3.14
Стандартные методы объектов типа String
  • charAt, indexOf, lastIndexOf, replace, split, substr, substring, toLowerCase, toUpperCase
  • Примеры:
  • "Google".charAt(3)
  • "g"
  • "Google".indexOf("o")
  • 1
  • "Google".lastIndexOf("o")
  • 2
  • "Google".replace("o", "oo")
  • "Gooogle"
  • "Google".replace(/o/g, "oo")
  • "Goooogle"
  • "Google".split("o")
  • ["G","","gle"]
  • "Google".substr(1,3)
  • "oog"
  • "Google".substring(1,3)
  • "oo"
  • "Google".toLowerCase()
  • "google"
  • "Google".toUpperCase()
  • "GOOGLE"
Тип Number
  • Числа – это 64-х-разрядные двоичные числа с плавающей точкой.
  • Number.MIN_VALUE
  • Number.MAX_VALUE
  • Number.NaN Number.POSITIVE_INFINITY Number.NEGATIVE_INFINITY
  • Операции над числами: + - * / % < > == !=
  • 3.14 % 2
  • 1.14
  • parseInt("3.14")
  • 3
  • Функции преобразования: parseInt, parseFloat, Number, toString
  • 5e-324 1.7976931348623157e+308
  • NaN Infinity
  • -Infinity
  • parseFloat("*3.14")
  • NaN
  • Number("3.xaxa")
  • NaN
  • 3.14.toString()
  • "3.14"
  • isNaN(3.14 / 0)
  • false
  • isNaN(0 / 0)
  • true
Тип Boolean
  • Стандартные логические значения – true и false. Однако в качестве условий можно использовать любое значение.
  • "Истинные" условия:
  • if (2 < 5)
  • "Ложные" условия:
  • if ('Google могуч и ужасен')
  • if (25)
  • if ("")
  • if (null)
  • if (0)
  • Логические условия используются в условных операторах и операторах циклов.
  • if (x < y) { z = x; } else { z = y; }
  • while (x < 100) { x = x * 2; n++; }
  • do { x = Math.floor(x / 2); n++; } while (x > 0);
  • for (var y = 0, x = 0; x < 100; ++x) { y += x; }
Тип Date
  • Объекты типа Date содержат дату в виде числа миллисекунд, прошедших с 1 января 1970 г. Диапазон от -108 до 108 дней от 1 января 1970 г.
  • Конструкторы:
  • var now = new Date(); // сейчас
  • var gagarin = new Date(1961, 3, 12);
  • var january1st1970 = new Date(0); // дата в миллисекундах
  • Методы, применимые для работы с датами: getDate, getMonth, getFullYear, getTime, getTimezoneOffset, setDate, setFullYear,…
  • function DaysToDate(day, month) {
  • var now = new Date(), year = now.getFullYear();
  • var bd = new Date(year, month-1, day);
  • var fullDay = 24 * 60 * 60 * 1000;
  • var diff = Math.ceil((bd - now) / fullDay);
  • return diff < 0 ? diff + 365 : diff;
  • }
  • var newYear = new Date("January 1, 2009");
  • для лекции javascript\todate.html
Сообщения, выдаваемые в popup-окнах
  • Три стандартные функции используются для генерации сообщений в popup-окнах: alert, confirm, prompt.
  • alert('Вы просрочили платеж!');
  • confirm('Вы этого хотите?');
  • var name = prompt('Как Вас зовут?',
  • 'Никак', 'Вопросик...');
  • Выдает true или false
  • Выдает введенную строку или null
События и реакции на них
  • Имеется большое количество событий, которые можно разделить на следующие классы:
  • <p>День независимости России <span style="color: blue; text-decoration: underline;" onclick= "alert('Осталось ' + DaysToDate(12, 6) + 'дней');"> 12 июня</span>.
  • </p>
  • - события от мыши (click, dblclick, mousedown,…);
  • - события от клавиатуры (keypress, keydown,…);
  • - события от элементов ввода (focus, submit, select,…);
  • - события страницы (load, unload, error,…);
  • Один из способов программирования состоит в определении реакции на события непосредственно в описании элемента, например:
  • для лекции javascript\holidays.html
  • Недостаток этого способа: javascript-текст опять смешивается с содержанием страницы.
Тип Array
  • Существует несколько способов создания массива:
  • var holidays = ["1 января", "7 января", "23 февраля"];
  • Атрибут массива: length – длина массива.
  • var myArray = new Array(); myArray[2] = new Date(2008,2,23);
  • myArray[5] = new Date(2008,5,9);
  • myArray.length ==
  • var holidays = new Array("1 января", "7 января", "23 февраля");
  • var holidays = new Array(3);
  • holidays[0] = "1 января"; holidays[1] = "7 января"; holidays[2] = "23 февраля";
  • 6
  • ?
Тип Array (продолжение)
  • Методы, определенные для работы с массивом: concat, join, pop, push, shift , unshift, slice
  • var names = ["Петя", "Вася"];
  • names = names.concat(["Сережа", "Наташа"], ["Оля", "Люба"]);
  • names == ["Петя", "Вася", "Сережа", "Наташа", "Оля", "Люба"]
  • var s = names.join(';');
  • s == "Петя;Вася;Сережа;Наташа;Оля;Люба"
  • var e = names.pop();
  • e == "Люба"
  • names == ["Петя", "Вася", "Сережа", "Наташа", "Оля"]
  • var l = names.push("Саша");
  • l == 6
  • names == ["Петя", "Вася", "Сережа", "Наташа", "Оля", "Саша"]
  • shift и unshift – точно так же, как pop и push, но с началом массива.
  • names = names.slice(1, 4);
  • names == ["Вася", "Сережа", "Наташа", "Оля"]
Тип Array (продолжение)
  • var names = ["Вася", "Сережа", "Наташа", "Оля"];
  • names.reverse();
  • names == ["Оля", "Наташа", "Сережа", "Вася"]
  • names.sort();
  • var a = [5, 3, 40, 1, 10, 100].sort();
  • a == [1, 10, 100, 3, 40, 5]
  • names.splice(1, 2, "Саша", "Таня", "Нина");
  • names == ["Вася", "Саша", "Таня", "Нина", "Сережа"]
  • toString – точно так же, как join(',').
  • Еще методы, определенные для работы с массивом: reverse, sort, splice, toString
  • names == ["Вася", "Наташа", "Оля", "Сережа"]
  • var a = [5, 3, 40, 1, 10, 100].sort(function(a,b){return a-b;});
  • a == [1, 3, 5, 10, 40, 100]
  • names.toString() == "Вася,Саша,Таня,Нина,Сережа"
Функции Обработка событий
  • knock ()
  • “knock ()” >
  • Пока веб-страница не загрузилась полностью, нельзя из JavaScript-кода обращаться к тем фрагментам программы, которые вставлены в веб-страницу ниже по тексту.
Изменение содержимого веб-страниц
  • Объект document имеет ряд полезных функций, например getElementById(id), которые позволяют получить доступ к элементам веб-
  • страницы и менять их содержание.
  • Отслеживание координат мыши