Язык JavaScript | ||||||||||||||||||||||
JavaScript это созданный фирмой Netscape межплатформенный объектно-ориентированный язык скриптинга (сценариев). JavaScript это небольшой компактный язык; он не используется для создания самостоятельных приложений, а разработан специально для упрощенного внедрения в другие приложения и продукты, такие как web-браузеры. Находясь внутри рабочей среды-хозяина, JavaScript может подключаться к объектам этой среды для предоставления программного управления ими. | ||||||||||||||||||||||
Клиентский и серверный JavaScript | ||||||||||||||||||||||
Ядро JavaScript содержит набор основных объектов, таких как Array, Date и Math, и основной набор элементов языка, таких как операции, управляющие структуры и операторы. Ядро JavaScript может быть расширено для различных целей путём дополнения его новыми объектами; например:
JavaScript позволяет создавать приложения, работающие по всей сети Internet. Клиентские приложения работают в браузере, таком как Netscape Navigator, а серверные приложения - на сервере, таком как Netscape Enterprise Server. Используя JavaScript, Вы можете создавать динамические HTML-страницы, обрабатывающие пользовательский ввод и имеющиеся данные, используя специальные объекты, файлы и реляционные БД. Клиентский и серверный JavaScript имеют следующие общие элементы:
Web-браузеры, такие как Navigator (2.0 и более поздние версии) могут интерпретировать операторы клиентского JavaScript, внедрённые в HTML-страницу. Когда браузер (или клиент) запрашивает такую страницу, сервер высылает клиенту по сети полное содержимое документа, включая HTML и операторы JavaScript. Браузер читает страницу сверху вниз, отображая результат работы HTML и выполняя операторы JavaScript по мере их обнаружения. Этот процесс, проиллюстрированный на рисунке, производит результат, который видит пользователь. Операторы клиентского JavaScript, встроенного в HTML-страницу, могут реагировать на пользовательские события, такие как щелчок мыши, ввод данных в форму и навигация по страницам. Например, Вы можете написать функцию JavaScript для проверки ввода пользователем правильной информации в форму, запрашивающую телефонный номер или zip-код. Без передачи по сети внедрённый JavaScript на HTML-странице может проверить введённые данные и вывести диалоговое окно, если пользователь ввёл неверные данные. Разные версии JavaScript работают со специфическими версиями Navigator'а. Например, JavaScript 1.2 работает с Navigator 4.0. Некоторые возможности JavaScript 1.2 недоступны в JavaScript 1.1 и поэтому недоступны в Navigator 3.0 На сервере Вы также можете внедрять JavaScript в HTML-страницы. Серверные
операторы могут соединяться с реляционными БД разных производителей, разделять
информацию между пользователями приложения, получать доступ к файловой
системе сервера или взаимодействовать с другими приложениями через LiveConnect
и Java. HTML-страницы с серверным JavaScript могут содержать также клиентский
JavaScript. |
||||||||||||||||||||||
JavaScript и Java | ||||||||||||||||||||||
Посредством функциональности LiveConnect, Вы можете осуществлять взаимодействие кодов Java и JavaScript. Из JavaScript Вы можете инстанциировать Java-объекты и получать доступ к их public-методам и полям. Из Java Вы можете иметь доступ к объектам, свойствам и методам JavaScript. 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. Эти языки скриптинга предоставляют утилиты программирования для более широкой аудитории, поскольку имеют упрощённый синтаксис, специализированную встроенную функциональность и минимальные требования при создании объектов. Сравнительная таблица Java и 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-документа экспонируются в Вашем скрипте. Netscape тесно сотрудничает с ECMA для создания спецификации ECMA. В следующей таблице описаны соотношения между версиями JavaScript и ECMA.
ECMA-262, Edition 2 содержал незначительные редакторские поправки и исправления спецификации Edition 1. Рабочая группа TC39 ECMA работает в настоящее время над ECMAScript Edition 4, которая соответствует будущей версии JavaScript - JavaScript 2.0. JavaScript всегда будет содержать возможности, не вошедшие в спецификацию ECMA; JavaScript совместим с ECMA, предоставляя, в то же время, дополнительные возможности. Спецификация ECMA это набор требований по реализации ECMAScript; она необходима, если Вы хотите убедиться, что данная возможность JavaScript поддерживается ECMA. Если Вы планируете писать код JavaScript, использующий только поддерживаемые ECMA возможности, то Вам, возможно, понадобится просмотреть и спецификацию ECMA. Документ ECMA не предназначен для помощи программистам - создателям скриптов; для получения информации о написании скриптов используйте документацию JavaScript. В спецификации ECMA используется терминология и синтаксис, которые могут быть незнакомы JavaScript-программисту. Хотя описание языка в ECMA может отличаться, сам язык остаётся тем же самым. JavaScript поддерживает всю функциональность спецификации ECMA. В документации ECMA описаны аспекты языка, которые нужны программисту на JavaScript. Например:
|
||||||||||||||||||||||
JScript | ||||||||||||||||||||||
В Microsoft практически
сразу осознали потенциал JavaScript и создали собственную версию этого языка
сценариев - JScript, - изменив при этом отдельные его фундаментальные положения.
Но JScript также и полномасштабная система для разработок в Web. Подобно
тому как JavaScript тесно взаимосвязан с технологической моделью Netscape,
язык JScript тесно интегрирован в модель Microsoft. В результате была достигнута
всесторонняя реализация JavaScript с рядом специфических дополнений, ориентированных
на браузер Internet Explorer. Инфраструктуры объектов в JScript и JavaScript
аналогичны, а способ применения JScript для Web-страниц такой же, как у
JavaScript. Однако за внешним сходством этих объектных инфраструктур скрываются существенные различия в том, как создаются и работают объектные модели JScript и JavaScript. В спецификации JScript задаются базовые функциональные свойства языка и основная инфраструктура его объектов; спецификация дополняется средствами объектной модели Internet Explorer для обслуживания сценариев. Именно за cчет этой надстройки предоставляется львинная доля возможностей JScript. Видите разницу: раздельная схема из базовых функций и средств объектной модели браузера, с одной стороны, и интегрированная модель Netscape, где базовые функции тесно переплетены с предлагаемой инфраструктурой объектов, с другой. Ясно, что в Microsoft выбрали не просто иной путь для реализации JScript, а более прогрессивное направление. Раздельное существование объектных моделей Internet Explorer и JScript позволяет корпорации Microsoft сделать ряд потрясающих вещей, одна из которых - открыть доступ к объектной модели Internet Explorer из предусмотренных в браузере языков сценариев других разновидностей (например, VBScript). Обновляя объектную модель Internet Explorer, Microsoft сразу же наращивает функциональные возможности как JScript, так и VBScript. Эта же объектная модель служит составной частью архитектуры ActiveX корпорации Microsoft. ActiveX, как и LiveConnect, является инфраструктурой, обеспечивающей взаимодействие различных технологий. Но в отличие от LiveConnect в ней используется расширенный интерфейс OLE, позволяющий связывать элементы управления ActiveX, сценарии и Java-апплеты. Хотя технология OLE - вещь уже давно известная, ее внедрение в инструментарий для Internet стало знаменательным новаторским решением, которое в сочетании с JScript открывает перспективу создания Web-страниц, обладающих самыми широкими возможностями: средствами виртуальной реальности, исчерпывающим управлением видеоданными, синхронным звуковым сопровождением и даже реализацией видеоигр. Если посмотреть глубже, то в JScript имеются интерфейсы и ссылки, позволяющие связать воедино все необходимые элементы. Широчайшая популярность ActiveX приносит дополнительные очки языку JScript в его конкурентной борьбе с JavaScript. Таким образом, если в своих сценариях вы собираетесь использовать в полном объеме возможности ActiveX, то необходим именно JScript. Это справедливо даже с учетом того, что в версии Navigator 4.0 предусмотрены средства, хотя и ограниченные, для работы с ActiveX. Что касается серверов, объектная модель JScript присутствует в архитектуре платформы Active, реализуемой на любом соответствующем сервере корпорации Microsoft, в том числе Internet Information Server 3.0 и следующих версий. В настоящее время ежедневная численность работающих с Web составляет более 60 млн. человек, из которых 30-35% используют Internet Explorer, а 55-60% - Netscape Navigator. Поскольку эти браузеры занимают доминирующие позиции на рынке, наша цель - создать сценарии, которые будут восприниматься обеими системами. Для этого нужно использовать только общие элементы объектных моделей JScript и JavaScript . На первый взгляд все очень просто. Однако лишь очень немногие владельцы Web-узлов действительно понимают имеющиеся между JScript и JavaScript различия, и уж совсем мало таких, кто может четко обозначить то общее, что у них есть. Но теперь, имея на вооружении данные таблиц 2 и 3, можно приступать к составлению сценариев, которые будут работать в среде как Internet Explorer, так и Netscape Navigator. При разработке необходимо помнить о постоянном совершенствовании спецификаций JScript и JavaScript. С выходом очередной версии Internet Explorer или Netscape Navigator можно ожидать появления новых функций в соответствующем языке. Если вы хотите использовать конкретное свойство, присутствующее только в одной спецификации, необходимо, чтобы сценарий либо выда-вал сообщение о наличии функций, не предусмотренных в браузере пользователя, либо корректно работал в обоих браузерах. Как это сделать? Секрет в том, чтобы организовать ветвление внутри сценария: первая ветвь команд будет исполняться браузером Internet Explorer, другая - Netscape Navigator . Поскольку до начала обработки любой функции браузер не проверяет ее на допустимость, наличие посторонних функций в сценарии не приведет к сообщению об ошибке. В ходе детального сравнения JScript и JavaScript выяснилось, что между этими версиями существует много и сходств, и различий, причем выявить бесспорного победителя не удалось. Оба языка обладают всесторонне развитыми средствами для обслуживания клиента и сервера; в каждом из них имеются свои уникальные возможности, функции, объекты. Любая из спецификаций, несомненно, сможет обеспечить достойное решение задач, возлагае-мых на сценарии в Web. Тем не менее существуют ситуации, когда предпочтительным будет выбор одного из языков, особенно если речь идет о корпоративной интрасети. Если вы готовите публикации в интрасети с использованием сервера Microsoft Web, ориентированного на технологию ActiveX, то явных симпатий заслуживают JScript и Internet Explorer - это даст возможность взаимодействовать с JScript- и ActiveX-средствами сервера. Если же в вашей интрасети работает сервер Netscape SuiteSpot Web, то очевидное преимущество получают JavaScript и Navigator - только при таком выборе будут доступны технологические средства JavaScript и Netscape ONE, предоставляемые сервером. Если поставленная задача выходит за рамки интрасети, то пропадает всякая возможность контроля, через какие браузеры будут обращаться к вашему Web-узлу. В такой ситуации наилучший выход - использовать только средства, общие для обоих языков, и создавать сценарии, которые будут работать у любого клиента. |
||||||||||||||||||||||
Visual JavaScript | ||||||||||||||||||||||
Netscape Visual JavaScript - это утилита визуальной разработки на базе компонентов для платформы Netscape Open Network Environment (ONE). Он первоначально предназначался для использования разработчиками межплатформенных стандартизованных web-приложений из готовых компонентов с минимальными затратами на программирование. Эти приложения базируются на HTML, JavaScript и Java. О Visual JavaScript см. Visual JavaScript Developer's Guide. |
||||||||||||||||||||||
Версии JavaScript | ||||||||||||||||||||||
Каждая версия Navigator'а
поддерживает различные версии JavaScript. Чтобы помочь Вам создавать скрипты,
совместимые с несколькими версиями Navigator'а, в этом документе указывается
версия JavaScript для каждой реализованной опции.
В таблице перечислены версии JavaScript, поддерживаемые версиями Navigator.
Каждая версия Netscape Enterprise Server также поддерживает различные версии JavaScript. Версии JavaScript и Netscape Enterprise Server
|
||||||||||||||||||||||
Новые возможности в версии JavaScript 1.3 | ||||||||||||||||||||||
JavaScript версии 1.3 имеет следующие нововведения и улучшения: Набор символов Unicode может использоваться для всех известных символов, и Вы можете использовать escape-последовательности Unicode в строковых литералах. Изменения в объекте Array:
Изменения в объекте Date:
Изменения в объекте Function:
Изменения в объекте String:
Новый метод toSource. Метод toSource возвращает строку, представляющую исходный код объекта. Новые свойства верхнего уровня: Infinity, NaN и undefined. Infinity это числовое значение, представляющее бесконечность. NaN это значение, представляющее Not-A-Number/Не-Число. undefined это значение undefined/неопределённое. Новая функция верхнего уровня isFinite. isFinite вычисляет аргумент, чтобы определить, является ли он конечным числом. Изменения в функции верхнего уровня eval. Нельзя использовать функцию eval неявно, вызывая её по имени, отличному от eval. Новые операции строго равенства: === и !==. Операция === (строго равно) возвращает true, если операнды равны и имеют один тип. Операция !== (строго не равно) возвращает true, если операнды не равны и/или разных типов. Изменения в операциях == и !=. Использование операций == (равно) и != (не равно) вернулось к тому, что было в JavaScript 1.1. Если два операнда имеют разные типы, JavaScript пытается конвертировать операнды в подходящий тип для проведения сравнения. Изменения в поведении проверки условия:
Консоль JavaScript. Консоль JavaScript это окно, выводящее все сообщения об ошибках JavaScript. Когда возникает ошибка JavaScript, сообщение об этом направляется на консоль JavaScript, и никакие диалоги не выводятся. |
||||||||||||||||||||||
Новые возможности в версии JavaScript 1.5 | ||||||||||||||||||||||
JavaScript версии
1.5 содержит следующие новые возможности и улучшения:
Ошибки времени выполнения. О них теперь сообщается как об исключениях. Улучшение форматирования чисел. Включены методы Number.prototype.toExponential, Number.protoytpe.toFixed и Number.prototype.toPrecision. См... Добавлены следующие улучшения в регулярных выражениях:
|
HIVE: All information for read only. Please respect copyright! |