| CARVIEW |
JavaScript
Материал из Википедии — свободной энциклопедии
| Класс языка: |
мультипарадигменный: объектно-ориентированное, обобщённое, функциональное, императивное, аспектно-ориентированное, событийно-ориентированное, прототипное программирование |
|---|---|
| Тип исполнения: |
интерпретация, компиляция в байт-код Java, JIT в машинные коды. |
| Появился в: |
1995 г. |
| Автор(ы): | |
| Последняя версия: |
1.8 / 2008 |
| Типизация данных: | |
| Основные реализации: |
SpiderMonkey, Rhino, KJS (JavaScript) (англ.), JavaScriptCore, V8 |
| Диалекты: | |
| Испытал влияние: | |
| Повлиял на: |
JavaScript — скриптовый язык, чаще всего использующийся при создании сценариев поведения браузера, встраиваемых в веб-страницы. Является одной из реализаций языка ECMAScript.
Название «JavaScript» является зарегистрированным товарным знаком компании Sun Microsystems, Inc.
Содержание |
[править] История
Предпосылкой появления языка JavaScript стало желание дать разработчикам HTML-документов возможность динамически управлять всеми объектами, описываемыми в коде Web-страницы. Разработанный Бренданом Айхом из компании Netscape язык был включён в браузер Netscape Navigator начиная с версии 2.0B3 в декабре 1995 года. Первоначально язык назывался Mocha, затем он был переименован в LiveScript. На синтаксис оказали влияние языки Си и Java, и, поскольку технология Java была в то время очень модной, LiveScript переименовали в JavaScript, получив соответствующую лицензию у Sun. Реализация компании Microsoft получила название JScript. Internet Explorer поддерживает JScript, начиная с версии 3.0, выпущенной в августе 1996 года. Стандартизация языка ассоциацией ECMA инициирована компанией Netscape. Стандартизированная версия имеет название ECMAScript, описывается стандартом ECMA-262. Первая версия данного стандарта примерно соответствовала JavaScript 1.1.
[править] Область применения
JavaScript в данный момент полностью занимает нишу браузерных языков. Несмотря на то, что, по слухам, некоторые разработчики браузеров встраивают (или уже встроили) в дополнение к JavaScript-у такой язык как Python, для динамического изменения веб-страниц на стороне клиента, официальной информации по этому вопросу нет.[источник не указан 72 дня]
JavaScript также находит применение в качестве скриптового языка доступа к объектам приложений. Платформа Mozilla (XUL/Gecko) использует JavaScript. Среди сторонних продуктов, например, Java, начиная с версии 6, содержит встроенный интерпретатор JavaScript на базе Rhino. Сценарии JavaScript поддерживаются в таких приложениях Adobe, как Adobe Photoshop, Adobe Dreamweaver, Adobe Illustrator или Adobe InDesign.
[править] О языке
JavaScript обладает рядом свойств объектно-ориентированного языка, но благодаря прототипированию поддержка объектов в нём отличается от традиционных ОО языков. Кроме того, JavaScript имеет ряд свойств, присущих функциональным языкам — функции как объекты первого уровня, объекты как списки, карринг (currying), анонимные функции, замыкания (closures) — что придаёт языку дополнительную гибкость.
JavaScript имеет C-подобный синтаксис, но по сравнению с языком С имеет следующие коренные отличия:
- объекты, с возможностью интроспекции и динамического изменения типа через механизм прототипов;
- функции как объекты первого класса;
- автоматическое приведение типов;
- автоматическая сборка мусора;
- анонимные функции.
Семантика языка JavaScript сходна с семантикой языка Self.
В языке нет классов, однако их можно эмулировать за счёт использования конструкторов. Пример эмуляции класса в JavaScript:
function MyClass() { this.myValue1 = 1; this.myValue2 = 2; } MyClass.prototype.myMethod = function() { return this.myValue1 * this.myValue2; } var mc = new MyClass(); mc.myValue1 = mc.myValue2 * 2; var i = mc.myMethod();
JavaScript используется в AJAX, одной из популярных технологий, позволяющей сделать страницы более динамическими и обеспечить новые возможности.
[править] Использование в HTML
JavaScript-код включается в HTML-код страницы и исполняется интерпретатором, встроенным в браузер. JavaScript заключается в теги <script></script> с обязательным[1] атрибутом type="text/javascript", хотя в большинстве браузеров язык сценариев по умолчанию именно JavaScript. При этом атрибут language (language="JavaScript"), несмотря на его активное использование, относится к не рекомендуемым (deprecated), отсутствует в DTD, поэтому считается некорректным[2].
Скрипт, выводящий модальное окно с классической надписью «Hello, World!» внутри браузера:
<script type="text/javascript"> alert('Hello, World!'); </script>
Следуя концепции интеграции JavaScript в существующие системы, браузеры поддерживают включение скрипта, например, в значение атрибута события:
<a href="delete.php" onclick="return confirm('Вы уверены?');">Удалить</a>
В приведённом примере при нажатии на ссылку функция confirm('Вы уверены?'); вызывает модальное окно с надписью «Вы уверены?», а return false; блокирует переход по ссылке. Разумеется, этот код будет работать только если в браузере есть и включена поддержка JavaScript, иначе переход по ссылке произойдет без предупреждения.
Использование кода JavaScript в контексте разметки страницы в рамках ненавязчивого JavaScript расценивается как плохая практика. Аналогом (при условии снабжения ссылки идентификатором alertLink)
<a href="delete.php" id="alertLink">Удалить</a>
приведённого примера может выступать, например, следующий фрагмент JavaScript:
window.onload = function() { var linkWithAlert = document.getElementById("alertLink"); linkWithAlert.onclick = function() { return confirm('Вы уверены?'); }; };
Есть и третья возможность подключения JavaScript — написать скрипт в отдельном файле, а потом подключить его с помощью конструкции
<script type="text/javascript" src="https://Путь_к_файлу_со_скриптом"></script>
[править] Версии
| JavaScript | JScript | ECMAScript |
|---|---|---|
| 1.0 (Netscape 2.0, март 1996) | 1.0 (ранние версии IE 3.0, август 1996) | Оригинальная версия языка JavaScript. Имела много ошибок и на данный момент безусловно устарела. |
| 1.1 (Netscape 3.0, август 1996) | 2.0 (поздние версии IE 3.0, январь 1997) | В данной версии был реализован объект Array и устранены наиболее серьезные ошибки. |
| 1.2 (Netscape 4.0, июнь 1997) | Реализован переключатель switch, регулярные выражения, а также ряд других особенностей. Практически приведён в соответствии со спецификацией ECMA v1. | |
| 1.3 (Netscape 4.5, октябрь 1998) | 3.0 (IE 4.0, октябрь 1997) | Редакция 1 (июнь 1997) / редакция 2 (июнь 1998). Исправлена несовместимость по JavaScript 1.2. Совместим с ECMA v1. |
| 1.4 (только Netscape Server) | 4.0 (Visual Studio 6, нет версии IE) | Применяется только в Netscape-серверных продуктах. |
| 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).Реализовано исключение погрузочно-разгрузочных операций. Совместим с ECMA v3. |
| 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
-
Основная статья: Библиотека JavaScript
Для создания кросс-браузерных веб-приложений с использованием JavaScript, используются специальные JavaScript библиотеки. Они представляют собой сборники JavaScript, осуществляющие поддержку при разработке программ.
Среди известных JavaScript библиотеки включают Adobe life, Dojo Toolkit, Extjs, jQuery, Mootools, Prototype, Qooxdoo.
[править] Отладка
В JavaScript доступ к отладчикам становится бесценным при разработке крупных нетривиальных программ, потому что в процессе разработки возникают разногласия с разными браузерами (в частности с DOM). Полезно иметь доступ к отладчику для каждого из браузеров, в которых будет работать веб-приложение. В настоящее время, Internet Explorer, Firefox, Safari, Google Chrome, а также Opera имеют отладчики сценариев.
Internet Explorer имеет три отладчика: Microsoft Visual Studio является самым полным из трёх, следом за ним следует Microsoft Script Editor (компонент Microsoft Office), и, наконец, свободный Microsoft Script Debugger, который гораздо более простой, чем два других. Бесплатный Microsoft Visual Web Developer Express предоставляет ограниченную версию с отладочной функцией JavaScript в Microsoft Visual Studio.
Разработку веб-приложений в Firefox можно отлаживать при помощи плагина Firebug или отладчика Venkman.
WebKit Web Inspector включает в себя отладчик JavaScript, в Safari от Apple.
[править] Средства тестирования
FireUnit — плагин, написанный для аддона FireBug. FireUnit написан Джоном Ресиком и Яном Одварко. Обладает наиболее удобной системой тестирования JS кода (по мнению автора). Необходимо помнить, что тестирование происходит на основе строковых переменных, поэтому может усложниться процесс тестирования массивов информации.
YUI test — является частью YUI.
JSUnit — порт JUnit для языка Java Script. Достаточно удобная система тестирования. Из минусов можно отметить необходимость установки виртуальной машины Java (если необходимо использовать JsUnit Server, что в большинстве случаев не требуется).
[править] JavaScript и Java
Общим заблуждением является то, что JavaScript аналогичен или тесно связан с Java, это не так. Оба языка имеют C-подобный синтаксис, являются объектно-ориентированными и как правило широко используются в клиентских веб-приложений, на этом их сходство заканчивается:
- Java использует парадигму ООП из C++; JavaScript использует прототипный подход (где нет классов, а объект — просто хеш);
- Java имеет статическую типизацию; JavaScript имеет динамическую типизацию (значение переменной может содержать объекты любого типа и даже функции);
- Java загружается из скомпилированного байт-кода; JavaScript интерпретируется напрямую из файла (но часто с незаметной JIT-компиляцией).
[править] См. также
[править] Примечания
- ↑ Спецификация HTML 4.01 (англ.)
- ↑ Список атрибутов элементов. Спецификация HTML 4.01 (англ.)
[править] Ссылки
- Стандарт ECMA-262 (англ.) (третье издание; формат PDF)
- Перевод стандарта ECMA-262
- Учебники с примерами
- Справочник
- Ссылки на ресурсы (англ.)
- Документация Mozilla (рус.)
- Поддержка JavaScript разными браузерами (англ.)
[править] Литература
- Томас Пауэлл, Фриц Шнайдер Полный справочник по JavaScript = JavaScript The Complete Reference. — 2-е изд. — М.: «Вильямс», 2007. — С. 960. — ISBN 0-07-225357-6
- Кристиан Уэнц JavaScript. Карманный справочник = JavaScript Phrasebook. — М.: «Вильямс», 2007. — С. 272. — ISBN 0-672-32880-1
| ECMAScript (сравнение) | |
|---|---|
| Диалекты | ActionScript · Caja · JavaScript / LiveScript · JScript · JavaScript OSA · JScript .NET · QtScript |
| Движки ECMAScript | InScript · JavaScriptCore · JScript · KJS · futhark · linear_b · Narcissus · QtScript · Rhino · SpiderMonkey · SunSpider · Tamarin · TraceMonkey · V8 · SquirrelFish |
| Другое | Brendan Eich · Ecma International |
| Основные языки программирования (список • сравнение • IDE) | |
|---|---|
| Используемые в разработке |
Ада • АПЛ • Ассемблер • ActionScript • ABAP/4 • AutoIt • AWK • BASIC • C • Кобол • C++ • C# • ColdFusion • D • dBase • Delphi • Eiffel • Erlang • Forth • Фортран • Gambas • Groovy • Haskell • Icon • Java • JavaScript • Limbo • Лисп • Lua • MATLAB • Object Pascal • Objective-C • Оберон • Parser • Паскаль • Perl • PHP • PowerBASIC • PureBasic • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • Tcl • Vala • Visual Basic • VB.NET |
| Академические | |
| IEC61131-3 |
Instruction List • ST • FBD • Ladder Diagram • SFC |
| Прочие | |
| Эзотерические | |
Просмотры
Личные инструменты
Навигация
Участие
Инструменты
На других языках
- Afrikaans
- العربية
- Žemaitėška
- Беларуская (тарашкевіца)
- Български
- ᨅᨔ ᨕᨘᨁᨗ
- Català
- Česky
- Dansk
- Deutsch
- Ελληνικά
- English
- Esperanto
- Español
- Eesti
- Euskara
- فارسی
- Suomi
- Français
- Galego
- עברית
- हिन्दी
- Hrvatski
- Magyar
- Interlingua
- Bahasa Indonesia
- Íslenska
- Italiano
- 日本語
- ქართული
- ភាសាខ្មែរ
- 한국어
- Lietuvių
- Latviešu
- Македонски
- മലയാളം
- Монгол
- Bahasa Melayu
- Nederlands
- Norsk (bokmål)
- Polski
- Português
- Română
- Саха тыла
- Simple English
- Slovenčina
- Slovenščina
- Shqip
- Српски / Srpski
- Svenska
- தமிழ்
- Тоҷикӣ
- ไทย
- Türkçe
- Українська
- Tiếng Việt
- 中文
- 粵語
- Последнее изменение этой страницы: 08:48, 4 сентября 2009.
- Текст доступен на условиях лицензии Creative Commons Attribution/Share-Alike, в отдельных случаях могут действовать дополнительные условия. Подробнее см. Terms of Use.
- Политика конфиденциальности
- Описание Википедии
- Отказ от ответственности
