
- •Основы языка JavaScript.
- •Возможности языка
- •Семантика и синтаксис
- •Структура языка
- •Объектная модель браузера
- •Объектная модель документа
- •Основной синтаксис
- •1.1Обзор
- •1.2Числа
- •1.3Строки
- •1.4Другие типы
- •1.5Переменные
- •1.6Операторы
- •1.7Управляющие структуры
- •1.8Объекты
- •1.9Массивы
- •1.10Функции
- •1.11Пользовательские объекты
- •1.12Внутренние функции
- •1.13Встраивание в веб-страницы
- •1.14Расположение внутри тега
- •1.15Отделение от разметки
- •1.16Вынесение в отдельный файл
- •1.17Атрибуты тега script
- •1.18Область применения
- •Браузерные операционные системы
- •Пользовательские скрипты в браузере
- •Серверные приложения
- •Мобильные приложения
- •Виджеты
- •Прикладное программное обеспечение
- •Манипуляция объектами приложений
- •Офисные приложения
- •1.19Библиотеки JavaScript
- •1.20Поддержка браузерами
- •1.21Безопасность
- •Межсайтовые уязвимости
- •Ошибки в браузере, плагинах и расширениях
- •Ошибки реализации песочницы
- •Краткие итоги
- •Задание на практическую работу
1.12Внутренние функции
В JavaScript функции можно объявлять внутри других функций. Очень важным аспектом является то, что внутренние функции имеют доступ к локальным переменным, определенным в родительской функции:
function betterExampleNeeded() {
var a = 1;
function oneMoreThanA() {
return a + 1;
}
return oneMoreThanA();
}
Это позволяет не засорять глобальный контекст ( scope ) именами функций, которые нужны для решения частных проблем в одной части кода. А также разделять переменные между разными вложенными функциями, не пользуясь глобальным пространством имен.
1.13Встраивание в веб-страницы
Для добавления JavaScript -кода на страницу, можно использовать теги <script></script>. Скрипт, выводящий модальное окно с классической надписью "Hello, World!" внутри браузера:
<script type="text/javascript">
alert('Hello, World!');
</script>
1.14Расположение внутри тега
Спецификация HTML описывает набор атрибутов, используемых для задания обработчиков событий. Пример использования:
<a href="delete.php" onclick="return confirm('Вы уверены?');">Удалить</a>
1.15Отделение от разметки
В приведенном примере при нажатии на ссылку функция confirm('Вы уверены?') ; вызывает модальное окно с надписью "Вы уверены?", а return false; блокирует переход по ссылке. Разумеется, этот код будет работать, только если в браузере есть и включена поддержка JavaScript, иначе переход по ссылке произойдет без предупреждения.
Использование кода JavaScript в контексте разметки страницы в рамках ненавязчивого JavaScript расценивается как плохая практика. Аналогом (при условии снабжения ссылки идентификатором alertLink ):
<a href="delete.aspx" id="alertLink">Удалить</a>
приведенного примера может выступать, например, следующий фрагмент JavaScript:
window.onload = function() {
var linkWithAlert = document.getElementById("alertLink");
linkWithAlert.onclick = function() {
return confirm('Вы уверены?');
};
};
1.16Вынесение в отдельный файл
Есть и третья возможность подключения JavaScript – написать скрипт в отдельном файле, а потом подключить его с помощью конструкции:
<script type="text/javascript" src="http://Путь_к_файлу_со_скриптом"></script>
1.17Атрибуты тега script
Тег script, широко используемый для подключения к странице JavaScript, имеет несколько атрибутов.
обязательный атрибут type для указания MIME-типа содержимого; необязательный атрибут src, принимающий в качестве значения адрес к файлу со скриптом;
необязательный атрибут charset, используемый вместе с src для указания используемой кодировки внешнего файла;
необязательный атрибут defer, используемый для того, чтобы показать, что скрипт не генерирует никакого содержимого (что означает, в частности, то, что в этом скрипте отсутствует вызов document.write() ).
При этом атрибут language (language="JavaScript"), несмотря на его активное использование, относится к не рекомендуемым (deprecated), отсутствует в DTD, поэтому считается некорректным.
1.18Область применения
Веб-приложения
JavaScript используется в клиентской части веб-приложений. Обмен информацией в Веб-приложениях происходит по сети. Одним из преимуществ такого подхода является тот факт, что клиенты не зависят от конкретной операционной системы пользователя, поэтому Веб-приложения являются межплатформенными сервисами.
AJAX
JavaScript используется в AJAX, популярном подходе к построению интерактивных пользовательских интерфейсов Веб-приложений, заключающемся в "фоновом" асинхронном обмене данными браузера с Веб-сервером. В результате, при обновлении данных Веб-страница не перезагружается полностью и интерфейс Веб-приложения становится быстрее, чем это происходит при традиционном подходе (без применения AJAX).
Comet
Comet – термин, описывающий механизм работы Веб-приложений, использующих постоянные HTTP-соединения, что позволяет Веб-серверу отправлять данные браузеру без дополнительного запроса со стороны браузера. Для таких приложений используются технологии, непосредственно поддерживаемые браузерами. В частности, в них широко используется JavaScript. Сама технология Comet позволяет создавать чаты, графики биржевых котировок в браузере.