
JavaScript – объектно-ориентированный скриптовый язык программирования. Является диалектом языка ECMAScript. JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.
Основные архитектурные черты:
динамическая типизация;
слабая типизация;
автоматическое управление памятью;
прототипное программирование;
функции как объекты первого класса.
На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.
Сценарий (скрипт, script) - программа, которая расширяет возможности языка HTML. Скрипты обрабатываются (интерпретируется) браузером одновременно с кодом HTML.
Событие - действие пользователя или операционной системы, которое вызывает запуск скрипта (программы). В качестве примера произошедших событий можно назвать: нажатие клавиши на клавиатуре, щелчок мышью, открытие окна браузера, срабатывание таймера.
Объект - контейнер, содержащий данные. Объект обладает свойствами и методами, предназначенными для изменения этих свойств. Сценарии позволяют изменять свойства объекта в соответствии с планом, разработанным дизайнером. Объектами являются: окно браузера (window), Web-страница (document), фрейм (frame), текстовое поле (text), кнопка (button). Некоторые объекты находятся в состоянии соподчиненности друг к другу (иерархии). Старшие объекты включают в себя младшие объекты. Например, Web-страница (document) может содержать внутри себя форму (form), которая может быть реализована в виде текстового поля (text).
Свойства - совокупность переменных, которые характеризуют объект, например, ширина и высота окна браузера.
Методы - функции (подпрограммы), которые позволяют изменять свойства объекта (а значит и сам объект). Характерной синтаксической особенностью методов является то, что их имена заканчиваются скобками. Например, open(), close(), write(). Кроме того, имена методов чаще всего являются глаголами, которые указывают на выполняемые действия: открыть, закрыть, написать.
Программистами создано большое число оригинальных скриптов (программ-сценариев обработки каких-либо событий с последующим изменением свойств объектов). Скрипты позволяют создавать разнообразные эффекты и выполнять различные действия, например: изменять цвет и форму кнопки при наведении на нее курсора, определять версию браузера клиента, выводить на экран местное время, изменять цвет фона страницы и т.д. При создании скрипта у програмистов имеется большой простор для творчества. Можно выбирать разные события, от которых происходит запуск скрипта. Программист самостоятельно определяет на какой объект будут направлены заланированные им действия.
Следует обратить внимание на тот факт, что язык JavaScript имеет средства для решения математических и логических задач, выполнения символьных операций, работы с датами и временем.
Язык JavaScript существенно отличается от процедурных (алгоритмических) языков. Работа программ, написанных на алгоритмических языках, идет практически непрерывно от момента их запуска до момента завершения. Скрипты - это множество программ, которые работают чаще всего независимо друг от друга и каждая программа запускается автономно при определенных действиях пользователя или операционной системы. По этой причине этот язык иногда называют интерактивным. При отсутствии активных действий пользователя скрипты не будут работать (за исключением, может быть, сценариев, которые запускаются с помощью таймера или в момент полной загрузки Web-страницы). Большую часть времени скрипты "дремят", ожидая активных действий пользователя.
Рассмотрим основные сведения об этом языке. Элементами языка являются:
Константы.
Переменные.
Функции.
Операторы.
Выражения.
Константы - величины, которые не изменяют своих значений в процессе работы скрипта. Константы бывают следующих типов:
Целые (десятичные, восьмеричные, шестнадцатеричные).
С плавающей точкой.
Строковые.
Булевы (логические).
Константа null, означающая отсутствие каких-либо значений (другими словами, null - это ничего нет, пусто).
Переменные - это величины, которые принимают различные значения в процессе работы скрипта. Технически переменные следует представлять себе, как ячейки оперативной памяти, содержимое которых может изменяться в процессе вычислений. При этом некоторым ячейкам памяти программист временно дает собственные имена.
Переменные могут быть глобальными и локальными. Локальные переменные действуют только внутри функции. Глобальные переменные действуют в рамках всей составленной программы. Однако, и глобальные переменные действуют лишь в пределах одной Web-страницы.
Имена переменных должны начинаться с буквы или с символа подчеркивания. В именах допустимо использование арабских цифр. Имена не могут содержать пробелов. Они не должны совпадать с ключевыми (зарезервированными) словами языка JavaScript. Перечень ключевых слов можно найти в различных литературных источниках.
Так же как и константы, переменные могут быть целыми, с плавающей точкой, строковыми и булевыми. Перед использованием переменные должны быть объявлены. Делается это так:
var = vol_sound;
var y12 = 3.123;
var x = "Alisa";
В приведенном примере объявлены три переменные. Причем для переменных y12 и x сразу определен их тип (соответственно с плавающей точкой и строковая переменная ).
Переменные могут быть сгруппированы в массивы. Массив - это пронумерованный набор переменных, называемых элементами массива. Порядковые номера элементов (переменных) называют индексами.
Функция - логически завершенный фрагмент программы, предназначенный для решения (реализации) определенной задачи. Каждая функция имеет оригинальное (неповторяющееся) имя. Одна и та же функция может быть многократно вызвана в разных местах программы.
Операторы - конструкции, которые определяют, какие действия производятся над константами, переменными, функциями. Операторы бывают следующих типов:
Присваивания.
Сравнения.Арифметические.Инкремента и декремента.Битовые.Логические.Строковые.Специальные.Управляющие.Цикла.
Выражения - набор констант, переменных, функций, соединенных операторами. Каждое выражение в языке JavaScript должно заканчиваться точкой с запятой.
Программа, написанная на языке JavaScript, чаще всего размещается внутри HTML-кода, например, внутри контейнера из тегов head. Границы сценария отмечают при помощи парного тега script. Заметим, что существует возможность разместить код скрипта в отдельном файле. В этом случае можно вызывать один и тот же сценарий на разные HTML-страницы.
Безопасность
JavaScript позволяет потенциальным авторам вредоносного кода запускать его на любом компьютере сети: для этого достаточно открыть на нём веб-страницу. Это обуславливает наличие двух принципиальных ограничений:
JavaScript-программы выполняются в песочнице, в которой они могут выполнять только ограниченный круг действий, а не задачи программирования общего назначения (например, создание файлов, работа с сокетами),
для JavaScript-кода применяется политика общего происхождения, в соответствии с которой скрипт, встроенный в страницу, не может получить доступ к ряду свойств объектов другой страницы (в частности, к большинству свойств объекта document) при отличии в протоколе, хосте и номере порта этих страниц.
Помимо этого, разработчики браузеров вносят дополнительные ограничения в ответ на имеющие место злоупотребления. Так появился, в частности, запрет на открытие окна, размер одной стороны которого меньше ста пиксел.
Межсайтовые уязвимости