Язык программирования JavaScript Ява СкриптJavaScript является объектно-ориентированный языком сценариев, изначально разработанный Netscape Communications под названием LiveScript, но затем переименован в "JavaScript" и с учетом синтаксиса ближе этот язык ближе Java компании Sun Microsystems. JavaScript был позже стандартизированы ECMA под названием ECMAScript. Microsoft называет свои версии JScript.
Изменение названия LiveScript на JavaScript произошло примерно в то же время , когда компания Netscape включили поддержку технологии Java в браузере Netscape Navigator. Это изменение внесло много путаницы у умы обучающихся программированию для начинающих. Не существует никакой реальной связи между Java и JavaScript, их сходство начинается и заканчивается схожим синтаксисом и тем фактом, что оба языка широко используются в сети Интернет.
JavaScript является объектно-ориентированным языком сценариев, который взаимодействует через интерфейс называемый Document Object Model (DOM) с содержимым, может быть выполнен на стороне сервера (веб-серверов) и на стороне клиента в веб-браузере пользователя при просмотре веб-страниц. Многие веб-сайты используют JavaScript технологии на стороне клиента для создания мощных динамических веб-приложений в программировании для чайников. Он может использовать Unicode и может использоватьмощь и силу регулярных выражений (это было введено в версии 1.2 в Netscape Navigator 4 и Internet Explorer 4). JavaScript выражения, содержащиеся в виде строке можно выполнить с помощью функции EVAL.
Одной из основных задач для JavaScript являются маленькие функции, внедренные в страницы HTML и позволяющие взаимодействовать с DOM из браузера для выполнения определенных задач, которые не представляется возможныом в статический HTML: такие открытие нового окна, проверка вводимых в форму значений, изменение изображения при наведении курсора мыши и т.д. К сожалению, создание таких функций является достаточно утомительным занятием, потому как браузеры не стандартизированы, различные браузеры могут создавать различные объекты или методы сценариев, и поэтому часто приходится писать различные варианты функции JavaScript для различных браузеров, но это не очень удобно при обучении основам программирования.
JavaScript / ECMAScript поддерживается такими движками как:
Окружающая среда
<-! ... -> Комментарий разметки требуется для того, чтобы гарантировать, что код не отобразится в виде текста, в браузерах, которые не признают тега <script>. <script> теги в XHTM / XML-документах, однако, не будут работать, если закомментированы. Современные браузеры, которые поддерживают XHTML и XML, достаточнохорошо разработаны, чтобы признать <script>, так что в этих документах код остается без комментариев.
HTML-элемент может генерировать внутренние события, к которым можно подключить скрипт обработчик. Чтобы создать верный документ HTML 4.01, нужно вставить соответствующее заявление по умолчанию вязык сценариев в разделе заголовка документа.
Элементы языка
Переменные
Переменнык, как правило, динамически типизированы. Переменные определяются либо просто присваиванием им значения или с помощью оператора "var". Переменные, объявленные вне функции находятся в "глобальной" области видимости, видимы на всей веб-странице, переменные, объявленные внутри функции являются локальными для этой функции. Чтобы передать переменные с одной страницы на другую, разработчик может установить "cookie" или использовать скрытый фрейм или окно в фоновом режиме для их хранения.
Структуры данных
Главным типом является структура данных в виде ассоциативного массива похожая на хэши на языке программирования Perl или словари Python, Postscript и Smalltalk.
Элементы могут быть доступны по номерам или ассоциативным названиям (если они были определены). Таким образом, следующие выражения могут все быть эквивалентны:
myArray[1], myArray.north, myArray["north"].
Объявление массивов
myArray = new Array(365);
Массивы реализованы так, что только определенные (имеющие не пустое значение) элементы будут использовать память, они "разряжают массивы". Если мы зададим множество myАггау [10] = "чего-то там" и myArray [57] = "что-то там еще ', то мы использовали место только для этих двух элементов.
Объекты
JavaScript имеет несколько видов встроенных объектов, а именно Object, Array, String, Number, Boolean, Function, Date and Math. Другие объекты принадлежат объектам DOM (окна, формы, ссылки и т.д.).
Определив функции конструктора можно определить объекты. JavaScript является объектно-ориентированный язык основанным на прототипах. Можно добавить дополнительные свойства и методы к отдельным объектам после того как они были созданы. Для этого для всех экземпляров определенного одного типа объекта можно использовать прототип-заявление.
Пример: Создание объекта // Функция-конструктор
function MyObject(attributeA, attributeB) {
this.attributeA = attributeA
this.attributeB = attributeB
}
// Создать объект obj = new MyObject('red', 1000)
/ / Доступ к атрибуту объекта alert(obj.attributeA)
/ / Доступ атрибут с ассоциативный обозначения массива alert(obj["attributeA"])
Иерархия объектов может быть воспроизведена и в JavaScript. Например:
function Base()
{
this.Override = _Override;
this.BaseFunction = _BaseFunction;
function _Override()
{
alert("Base::Override()");
}
function _BaseFunction()
{
alert("Base::BaseFunction()");
}
}
function Derive()
{
this.Override = _Override;
function _Override()
{
alert("Derive::Override()");
}
}
Derive.prototype = new Base();
d = new Derive();
d.Override();
d.BaseFunction();
В результате получим на экране:Derive::Override()
Base::BaseFunction()
Управляющие инструкции
If ... else
if (condition) {
statements
}
[else {
statements
}]
Циклы
while (condition) {
statements
}
Do ... while
do {
statements
} while (condition);
For loop
for ([initial-expression]; [condition]; [increment-expression]) {
statements
}
Цикл For ... in Этот цикл проходит по всем свойствам объекта (или элемента в массиве)
for (variable in object) {
statement
}
Оператор выбора
switch (expression) {
case label1 :
statements;
break;
case label2 :
statements;
break;
default :
statements;
}
Функции Заключается тело функции в {тело может быть пустым}, а список аругментов указывается внутри () идущих после имени функции. Функции могут возвращать значение, после выполнения. function(arg1, arg2, arg3) {
statements;
return expression;
}
В качестве примера разберем функцию, основанную на алгоритме поиска наибольшего общего делителя Евклида:
function gcd(a, b) {
while (a != b) {
if (a > b) {
a = a - b;
} else {
b = b - a;
}
}
return a;
}
Количество аргументов при вызове данной функции не должны обязательно предоставлять столько аргументов, сколько указано при объявлении функции. В функции аргументы могут также быть доступны через массив аргументов.
Каждая функция - экземпляр функции, базового типа объекта. Функции могут быть созданы и назначены как и любые другие объекты:
var myFunc1 = new Function("alert('Hello')");
var myFunc2 = myFunc1;
myFunc2();
результат на экране:
"Hello"
Взаимодействие с пользователем
Большинство взаимодействие с пользователем осуществляется с помощью HTML-форм, которые могут быть доступны через HTML DOM. Однако Есть также некоторые очень простые средства общения с пользователем:
Оповещение диалоговом окне Подтвердите диалоговое окно Строки диалогового окна Строка состояния Консоли
События
Текстовые элементы могут быть источником различных событий, которые могут вызвать действия, если обработчик события EMCAScript зарегистрирован. В HTML эти функции обработчика событий часто определяется как анонимные функции непосредственно в тегах HTML.
Список событий:
- onAbort
- onBlur
- onChange
- onClick
- onDblClick
- onDragDrop
- onError
- onFocus2
- onKeyDown
- onKeyPress
- onKeyUp
- onLoad
- onMouseDown
- onMouseMove
- onMouseOut
- onMouseOver
- onMouseUp
- onMove
- onReset
- onResize
- onSelect
- onSubmit
- onUnload
Обработка ошибок
Новые версии JavaScript включают try ... catch обработки ошибок.
try {
// объявляем блок, в котором исключения могут быть пойманы
} catch (error) {
// блок, который выполняется в случае появления ошибки
} finally
// блок, который выполняют в любом случае
}
|