JavaScript
Материал из Википедии — свободной энциклопедии
Содержание |
JavaScript — интерпретируемый язык программирования, являющийся одной из реализаций языка ECMAScript и основанный на концепции прототипов, пришедшей из языка Self.
В настоящее время JavaScript используется в основном для создания сценариев поведения браузера, встраиваемых в веб-страницы, но также находит применение в качестве скриптового языка доступа к объектам приложений. Некоторые приложения имеют встроенный интерпретатор JavaScript, позволяющий расширять их возможности без изменения самого приложения. Сама Java, начиная с версии 6, содержит встроенный интерпретатор JavaScript на базе Rhino для поддержки скриптовых языков пользовательскими приложениями.
JavaScript обладает рядом свойств объектно-ориентированного языка, но благодаря прототипированию поддержка объектов в нём отличается от традиционнных ОО языков. Так же, JavaScript имеет ряд свойств, присущих функциональным языкам — функции как объекты первого уровня, объекты как списки, карринг (currying), анонимные функции, замыкания (closures) — что придаёт языку дополнительную гибкость.
Название JavaScript является зарегистрированной торговой маркой компании Sun Microsystems, Inc.
[править] История
Разработанный компанией Netscape, язык был включён в браузер Netscape Navigator начиная со второй версии и первоначально назывался LiveScript. Синтаксис языка брал начало от языка Си, но, поскольку технология Java была в то время очень модной, LiveScript переименовали в JavaScript, получив соответствующую лицензию у Sun. Компания Microsoft, увидев успех JavaScript, создала свою версию этого языка под названием JScript. Прочие производители браузеров также создали свои версии этого языка, что делает задачу написания сложного универсального (совместимого с любым браузером) скрипта довольно трудной. В основном диалекты JavaScript отличаются друг от друга объектной моделью браузера, или DOM. Для решения проблем совместимости ассоциация ECMA предложила стандарт ECMA-262. По возможностям ECMAScript примерно соответствует JavaScript 1.1.
[править] О языке
JavaScript имеет C-подобный синтаксис, но по сравнению с языком Си имеет следующие коренные отличия:
- объекты, с возможностью интроспекции и динамического изменения типа через механизм прототипов
- функции как объекты первого уровня
- обработка исключений
- автоматическое приведение типов
- автоматическая сборка мусора
- анонимные функции
Изначально JavaScript был разработан как скриптовый язык для расширения возможностей существующих приложений. В первую очередь он стал хорошо известным и популярным благодаря использованию в браузерах. Однако этот язык широко применяется и в целом ряде других систем и приложений, например Photoshop.
При использовании в рамках технологии DHTML, код JavaScript включается в HTML-код страницы и исполняется интерпретатором, встроенным в браузер. JavaScript заключается в теги <script></script>
, по спецификации HTML 4.01 у тега <script>
обязателен атрибут type="text/javascript"
, хотя в большинстве браузеров язык сценариев по умолчанию именно JavaScript. При этом атрибут language (language="JavaScript"
), несмотря на его активное использование, не входит в стандарт и поэтому считается некорректным.
[править] Примеры программ
Пример объявления и использования класса в JavaScript (класс является одновременно функцией, так как функции - это объекты первого уровня):
function MyClass()
{
this.myValue1 = 1;
this.myValue2 = 2;
}
var mc = new MyClass();
mc.myValue1 = mc.myValue2*2;
Скрипт, выводящий модальное окно с классической надписью «Hello, World!» внутри браузера:
<script type="text/javascript"> alert('Hello, World!'); </script>
Следуя концепции интеграции JavaScript в существующие системы, браузеры поддерживают включение скрипта, например, в значение атрибута события:
<a href="delete.php" onclick="return confirm('Вы уверены?');">Удалить</a>
Здесь при нажатии на ссылку функция alert('Вы уверены?'); вызвает модальное окно с надписью «Вы уверены?», а return false; блокирует переход по ссылке. Разумеется, этот код будет работать только если в браузере есть и включена поддержка JavaScript, иначе переход по ссылке произойдет без предупреждения.
Есть и третья возможность подключения JavaScript — написать скрипт в отдельном файле, а потом подключить его с помощью конструкции
<script type="text/javascript" src="http://Путь_к_файлу_со_скриптом"></script>
Одна из популярных технологий, позволившая сделать страницы более динамическими и обеспечить новые возможности — это динамическая загрузка и вставка JavaScript-кода и (или) других данных в документ, получившая название AJAX. Следует отметить, что она поддерживается только современными браузерами, поэтому может приводить к проблемам совместимости.
[править] Версии
JavaScript | JScript | ECMAScript |
---|---|---|
1.0 (Netscape 2.0, март 1996) | 1.0 (ранние версии IE 3.0, август 1996) | |
1.1 (Netscape 3.0, август 1996) | 2.0 (поздние версии IE 3.0, январь 1997) | |
1.2 (Netscape 4.0, июнь 1997) | ||
1.3 (Netscape 4.5, октябрь 1998) | 3.0 (IE 4.0, октябрь 1997) | Редакция 1 (июнь 1997) / редакция 2 (июнь 1998) |
1.4 (только Netscape Server) | 4.0 (Visual Studio 6, нет версии IE) | |
5.0 (IE 5.0, март 1999) | ||
5.1 (IE 5.01) | ||
1.5 (Netscape 6.0, ноябрь 2000; также подзние версии Netscape и Mozilla) |
5.5 (IE 5.5, июль 2000) | Редакция 3 (декабрь 1999) |
5.6 (IE 6.0, октябрь 2001) | ||
1.6 (Gecko 1.8, Firefox 1.5, ноябрь 2005) | Редакция 3 с некоторыми совместимыми улучшениями: E4X, дополнения к Array (например, Array.prototype.forEach ), упрощения для Array и String [1](англ.) |
|
1.7 (Gecko 1.8.1, Firefox 2.0, осень 2006), расширение JavaScript 1.6 | Редакция 3, с добавлением всех улучшений из JavaScript 1.6, генераторов и списочных выражений (list comprehensions, [a*a for (a in iter)] ) из Python, блоковых областей с использованием let и деструктурирующего присваивания (var [a,b]=[1,2] ) [2](англ.) |
|
JScript .NET (ASP.NET; нет версии IE) | (Считается, что JScript .NET разработан при участии других членов ECMA) | |
2.0 (старое предложение Netscape) | Редакция 4 (в разработке) |
[править] См.также
[править] Ссылки
- Javascript Tutorials (англ.)
- Стандарт ECMA-262 (англ.) (третье издание; формат PDF)
- Справочник Netscape по JavaScript (англ.)
- Документация по JScript от Microsoft (англ.)
- Cправочник по JavaScript на русском
- Статьи про тонкости JavaScript
- Поддержка JavaScript разными браузерами (англ.)
- Клиентский JavaScript v1.3.Руководство
- Клиентский JavaScript v1.3. Справочник
- Серверный JavaScript 1.4. Руководство
- A (Re)-Introduction to JavaScript (англ.)