Ядро JavaScript 1.5. Руководство по Использованию

Глава 1   JavaScript. Обзор.



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

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



Что Такое JavaScript?


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

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

  • Клиентский JavaScript расширяет ядро языка, добавляя объекты управления браузером (Navigator или другой аналогичный web-браузер) и Document Object Model/Объектную Модель Документа (DOM). Например, клиентские расширения позволяют приложению размещать элементы на HTML-форме и реагировать на пользовательские события, такие как щелчок мышью, ввод данных в форму или навигация по страницам.

  • Серверный JavaScript расширяет ядро языка, добавляя объекты, относящиеся к запуску JavaScript на сервере. Например, серверные расширения позволяют приложению взаимодействовать с реляционной базой данных, сохраняя информацию между вызовами приложения, или выполнять манипуляции с файлами на сервере.

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

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



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
 
JavaScript

Java

Объектно-ориентированный. Нет различий между типами объектов. Наследование осуществляется через механизм прототипов, и свойства и методы могут добавляться к объекту динамически.

На базе классов. Объекты поделены на классы и экземпляры с наследованием по всей иерархии классов. Классы и экземпляры не могут иметь динамически добавляемые свойства и методы.

Типы данных переменных не объявляются (динамическая типизация).

Типы данных переменных обязаны быть объявлены (статическая типизация).

Не может автоматически записывать на жесткий диск.

Не может автоматически записывать на жесткий диск.

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



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-документа экспонируются в Вашем скрипте.


Соотношение Между Версиями JavaScript и ECMA

 

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

Таблица 1.2  Версии JavaScript и ECMA
 
Версия JavaScript
Соотношение с Версией ECMA

JavaScript 1.1

ECMA-262, Edition 1 базируется на JavaScript 1.1.

JavaScript 1.2

ECMA-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.3

JavaScript 1.3 полностью совместим с ECMA-262, Edition 1.

JavaScript 1.3 устранил несоответствие между JavaScript 1.2 и ECMA-262, сохранив все дополнительные возможности JavaScript 1.2, за исключением == и !=, которые были изменены для обеспечения соответствия с ECMA-262.

JavaScript 1.4

JavaScript 1.4 полностью совместим с ECMA-262, Edition 1.

Третья версия спецификации ECMA была не закончена, когда JavaScript 1.4 вышел в свет.

JavaScript 1.5

JavaScript 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, предоставляя, в то же время, дополнительные возможности.



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

 

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

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



JavaScript и Терминология ECMA

 

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

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

  • Объект global не обсуждается в документации по JavaScript, поскольку Вы не используете его явно. Методы и свойства объекта global обсуждаются в документации по JavaScript, но называются функциями и свойствами верхнего уровня.

  • Конструктор без параметров (нулевой аргумент) с объектами Number и String не обсуждается в документации JavaScript, поскольку то, что генерируется, используется мало. Конструктор объекта Number без аргумента возвращает +0, а конструктор объекта String без аргумента возвращает "" (пустую строку).


Новые Возможности в Этой Версии

 

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

  • Ошибки времени выполнения. О них теперь сообщается как об исключениях.

  • Улучшение форматирования чисел. Включены методы Number.prototype.toExponential, Number.protoytpe.toFixed и Number.prototype.toPrecision. См...

  • Добавлены следующие улучшения в регулярных выражениях:
     
    • Квантификаторы +, *, ? и {} могут иметь теперь после себя ? для форсирования их в нежадные. См. статью о ? .

    • Незахватывающие скобки, (?:x) могут использоваться вместо захватывающих скобок (x). Если используются незахватывающие скобки, совпадающие подвыражения недоступны как обратные ссылки. См. статью о (?:х).

    • Положительные и отрицательные "смотрящие вперед утверждения" поддерживаются. И те, и другие подтверждают совпадение, в зависимости от того, что идет после совпавшей подстроки. См. статьи о  x(?=y) и x(?!y).

    • Флаг m был добавлен, чтобы дать возможность специфицировать, что регулярное выражение должно совпадать на нескольких строках. См...

  • Объявление условной функции. Функции могут теперь объявляться внутри if. См...

  • Функции выражения. Функции могут теперь объявляться внутри выражения. См...

  • Несколько переходов catch поддерживаются теперь внутри оператора try...catch. См...

  • Getter'ы и Setter'ы. Теперь в JavaScript можно добавлять их к объектам. Эта возможность имеется только в C-реализации JavaScript. См...

  • Константы. Теперь поддерживаются именованные константы "только для чтения". Эта возможность имеется только в C-реализации JavaScript. См...
Назад     Оглавление     Индекс     Вперед

 



 

 

Наши ссылки на веб-страницы, можно скопировать html-код ссылки


Книги по математике и физике, программы HTML, компьютерные технологии

Документация HTML, XML, JavaScript на русском языке для разработчиков W3C

   Примечание. Удобная текстовая ссылка для форумов, блогов, цитирования материалов веб-сайта, код html можно скопировать и просто вставить в Ваши веб-страницы при цитировании материалов нашего веб-сайта. Материал носит неофициальный характер и приведен для ознакомления.