Wiki-учебник по веб-технологиям: JavaScript/JavaScriptОбзор ...

Главная | |

JavaScript. Обзор


В этой главе содержится введение в JavaScript, обсуждаются некоторые фундаментальные положения и новые возможности релиза 1.5.

В главе имеются следующие разделы:

Оглавление документа


1. Что такое JavaScript?


JavaScript это созданный фирмой Netscape межплатформенный объектно-ориентированный язык скриптинга (сценариев). JavaScript это небольшой компактный язык; он не используется для создания самостоятельных приложений, а разработан специально для упрощенного внедрения в другие приложения и продукты, такие как web-браузеры. Находясь внутри рабочей среды-хозяина, JavaScript может подключаться к объектам этой среды для предоставления программного управления ими.

Ядро JavaScript содержит набор основных объектов, таких как Array, Date и Math, и основной набор элементов языка, таких как операции, управляющие структуры и операторы. JavaScript может быть расширено для различных целей путём дополнения его новыми объектами; например:



Посредством функциональности LiveConnect, Вы можете осуществлять взаимодействие кодов Java и JavaScript. Из JavaScript Вы можете инстанциировать Java-объекты и получать доступ к их public-методам и полям. Из Java Вы можете иметь доступ к объектам, свойствам и методам JavaScript.

Netscape изобрела JavaScript, и JavaScript был впервые использован в браузерах Netscape.

2. JavaScript и Java


JavaScript и Java похожи друг на друга, но имеют и фундаментальные отличия. Язык JavaScript похож на Java, не не имеет статической типизации Java и строгой проверки типов. JavaScript поддерживает большую часть расширений синтаксиса Java и базовых конструкций управления потоком.

В отличие от системы времени компиляции классов Java, построенной на объявлениях, JavaScript поддерживает систему времени выполнения на базе небольшого количества типов данных: числовых, Булевых и строковых значений. JavaScript имеет объектную модель на базе прототипов, а не на более привычной базе классов. Модель на базе прототипов предоставляет динамическое наследование; то есть то, что наследуется, может отличаться для каждого конкретного объекта. JavaScript также поддерживает функции без каких-либо требований к их объявлению. Функции могут быть свойствами объекта, выполняя свободно типизированные методы.

JavaScript является очень свободным языком по сравнению с Java. Вы не должны объявлять все переменные, классы и методы. Вы не должны заботиться о том, какие методы являются public, private или protected, и не должны реализовывать интерфейсы. Значения, возвращаемые переменными, параметрами и функциями, не типизированные явно.

Java является языком программирования на базе классов, разработанным для быстрого выполнения и безопасности типов. Безопасность типов означает, к примеру, что Вы не можете привести Java integer к ссылке на объект или получить доступ к private-памяти, нарушив байтовый код Java. Модель Java на базе классов означает, что программы состоят исключительно из классов и их методов. Наследование классов Java и строгая типизация в целом требуют тесно связанной иерархии объектов. Эти требования делают язык Java более сложным, чем JavaScript.

В противоположность этому, JavaScript по духу и сути ведёт своё происхождение от линии компактных, динамически типизируемых языков, таких как HyperTalk и dBASE. Эти языки скриптинга предоставляют утилиты программирования для более широкой аудитории, поскольку имеют упрощённый синтаксис, специализированную встроенную функциональность и минимальные требования при создании объектов.

Таблица 1.1 JavaScript в сравнении с Java

JavaScriptJava
Объектно-ориентированный. Нет различий между типами объектов. Наследование осуществляется через механизм прототипов, и свойства и методы могут добавляться к объекту динамическиНа базе классов. Объекты поделены на классы и экземпляры с наследованием по всей иерархии классов. Классы и экземпляры не могут иметь динамически добавляемые свойства и методы
Типы данных переменных не объявляются (динамическая типизация)Типы данных переменных обязаны быть объявлены (статическая типизация)
Не может автоматически записывать на жёсткий дискНе может автоматически записывать на жёсткий диск

Дополнительную информацию об различиях между JavaScript и Java см. в Главе 8, Объектная Модель. Детали.

3. JavaScript и спецификация ECMA


Netscape изобрела JavaScript, и JavaScript был впервые использован в браузерах фирмы Netscape. Но Netscape работает совместно с ECMA (European Computer Manufacturers Association/Европейская Ассоциация Производителей Компьютеров) для создания стандартизованного международного языка программирования на базе ядра JavaScript. ECMA является ассоциацией международных стандартов в области информации и систем коммуникации. Стандартизованная версия JavaScript, называемая **ECMAScript**, ведёт себя совершенно одинаково во всех приложениях, поддерживающих этот стандарт. Компании могут использовать этот открытый стандартный язык для разработки своих реализаций JavaScript. Первая версия стандарта ECMA задокументирована в спецификации ECMA-262.

Стандарт ECMA-262 также одобрен ISO (International Organization for Standards) как ISO-16262. Вы можете найти PDF-версию ECMA-262 на web-сайте Mozilla. Вы можете также найти эту спецификацию на web-сайте ECMA. Спецификация ECMA не описывает Document Object Model (DOM), которая стандартизована консорциумом World Wide Web Consortium (W3C). DOM определяет способ, которым объекты HTML-документа экспонируются в Вашем скрипте.

3.1. Соотношение между версиями JavaScript и ECMA


Netscape тесно сотрудничает с ECMA для создания спецификации ECMA. В следующей таблице описаны соотношения между версиями JavaScript и ECMA.

Таблица 1.2 Версии JavaScript и ECMA

Версия JavaScriptСоотношение с Версией ECMA
JavaScript 1.1ECMA-262, Edition 1 базируется на JavaScript 1.1.
JavaScript 1.2ECMA-262 не была завершена, когда появилась версия JavaScript 1.2.
JavaScript 1.2 не полностью совместима с ECMA-262, Edition 1 по следующим причинам:

  • Netscape разработал в JavaScript 1.2 дополнительные возможности, которые не вошли в ECMA-262.
  • ECMA-262 добавила две новые возможности: интернационализация через Unicode и универсальное поведение на всех платформах. Некоторые возможности JavaScript 1.2, такие как объект Date, были платформозависимыми и вели себя по разному на разных платформах.
JavaScript 1.3JavaScript 1.3 полностью совместим с ECMA-262, Edition 1.
JavaScript 1.3 устранил несоответствие между JavaScript 1.2 и ECMA-262, сохранив все дополнительные возможности JavaScript 1.2, за исключением == и !=, которые были изменены для обеспечения соответствия с ECMA-262.
JavaScript 1.4JavaScript 1.4 полностью совместим с ECMA-262, Edition 1.
Третья версия спецификации ECMA была не закончена, когда JavaScript 1.4 вышел в свет.
JavaScript 1.5JavaScript 1.5 полностью совместим с ECMA-262, Edition 3.

Примечание:
ECMA-262, Edition 2 содержал незначительные редакторские поправки и исправления спецификации Edition 1. Рабочая группа TC39 ECMA работает в настоящее время над ECMAScript Edition 4, которая соответствует будущей версии JavaScript – JavaScript 2.0.

Книга Ядро JavaScript. Справочник. указывает, какие возможности языка совместимы с ECMA.

JavaScript всегда будет содержать возможности, не вошедшие в спецификацию ECMA; JavaScript совместим с ECMA, предоставляя, в то же время, дополнительные возможности.

3.2. Документация JavaScript и спецификация ECMA


Спецификация ECMA это набор требований по реализации ECMAScript; она необходима, если Вы хотите убедиться, что данная возможность JavaScript поддерживается ECMA. Если Вы планируете писать код JavaScript, использующий только поддерживаемые ECMA возможности, то Вам, возможно, понадобится просмотреть и спецификацию ECMA.

Документ ECMA не предназначен для помощи программистам – создателям скриптов; для получения информации о написании скриптов используйте документацию JavaScript.

3.3. JavaScript и терминология ECMA


В спецификации ECMA используется терминология и синтаксис, которые могут быть незнакомы JavaScript-программисту. Хотя описание языка в ECMA может отличаться, сам язык остаётся тем же самым. JavaScript поддерживает всю функциональность спецификации ECMA.

В документации JavaScript описаны аспекты языка, которые нужны программисту на JavaScript. Например:


4. Новые возможности в этой версии


JavaScript версии 1.5 содержит следующие новые возможности и улучшения: