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

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

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

JavaScript позволяет создавать приложения, работающие по всей сети Internet. Клиентские приложения работают в браузере, таком как Netscape Navigator, а серверные приложения - на сервере, таком как Netscape Enterprise Server. Используя JavaScript, Вы можете создавать динамические HTML-страницы, обрабатывающие пользовательский ввод и имеющиеся данные, используя специальные объекты, файлы и реляционные БД.

Клиентский и серверный JavaScript имеют следующие общие элементы:

  • Ключевые слова
  • Синтаксис операторов и грамматику
  • Правила написания выражений, переменных и литералов
  • Лежащую в основе объектную модель (хотя клиентский и серверный JavaScript имеют разные предопределённые объекты)
  • Предопределённые объекты и функции, такие как Array, Date и Math

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, HTML-страницы, использующие серверный JavaScript, компилируются в байт-кодовые исполняемые файлы. Эти исполняемые приложения запускаются на выполнение web-сервером, имеющим машину времени выполнения JavaScript. Исходя из этого, создание приложений JavaScript это процесс из двух этапов.
На первом этапе Вы создаёте HTML-страницы (которые могут содержать операторы как клиентского, так и серверного JavaScript) и файлы JavaScript. Затем Вы компилируете все эти файлы в единый исполняемый блок.
На втором этапе страница приложения запрашивается клиентским браузером. Машина выполнения использует исполняемый блок для просмотра исходной страницы и динамической генерации HTML-страницы, возвращаемой клиенту. Она выполняет все найденные на странице операторы серверного JavaScript. Выполнение этих операторов может добавить новые операторы HTML или операторы клиентского JavaScript в HTML-страницу. Машина выполнения отсылает затем окончательный вариант страницы по сети Navigator-клиенту, который выполняет клиентский JavaScript и отображает результат.
В отличие от стандартных программ Common Gateway Interface (CGI), все исходники JavaScript интегрированы непосредственно в HTML-страницы, ускоряя разработку и облегчая обслуживание. Служба Session Management Service серверного JavaScript содержит объекты, которые Вы можете использовать для работы с данными, существующими между клиентскими запросами, у нескольких клиентов или нескольких приложений. Служба LiveWire Database Service серверного JavaScript предоставляет объекты для доступа к БД, служащие интерфейсом для серверов Structured Query Language (SQL).

 
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:

JavaScript Java
Объектно-ориентированный. Нет различий между типами объектов. Наследование осуществляется через механизм прототипов, и свойства и методы могут добавляться к объекту динамически. На базе классов. Объекты поделены на классы и экземпляры с наследованием по всей иерархии классов. Классы и экземпляры не могут иметь динамически добавляемые свойства и методы
Типы данных переменных не объявляются (динамическая типизация). Типы данных переменных обязаны быть объявлены (статическая типизация).
Не может автоматически записывать на жёсткий диск Не может автоматически записывать на жёсткий диск
 
Спецификация 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.

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

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

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

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

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

  • Объект global не обсуждается в документации по JavaScript, поскольку Вы не используете его явно. Методы и свойства объекта global обсуждаются в документации по JavaScript, но называются функциями и свойствами верхнего уровня.
  • Конструктор без параметров (нулевой аргумент) с объектами Number и String не обсуждается в документации JavaScript, поскольку то, что генерируется, используется мало. Конструктор объекта Number без аргумента возвращает +0, а конструктор объекта String без аргумента возвращает "" (пустую строку).
 
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.
Версии Navigator'а, предшествовавшие версии 2.0, не поддерживают JavaScript.

Версия JavaScript Версия Navigator
JavaScript 1.0 Navigator 2.0
JavaScript 1.1 Navigator 3.0
JavaScript 1.2 Navigator 4.0-4.05
JavaScript 1.3 Navigator 4.06-4.7x
JavaScript 1.4 -
JavaScript 1.5 Navigator 6.0

Mozilla (свободно распространяемый браузер)

Каждая версия Netscape Enterprise Server также поддерживает различные версии JavaScript.

Версии JavaScript и Netscape Enterprise Server

Аббревиатура Версия Enterpriser Server
NES 2.0 Netscape Enterprise Server 2.0
NES 3.0 Netscape Enterprise Server 3.0

Вернуться

 
Новые возможности в версии JavaScript 1.3

JavaScript версии 1.3 имеет следующие нововведения и улучшения:

Набор символов Unicode может использоваться для всех известных символов, и Вы можете использовать escape-последовательности Unicode в строковых литералах.

Изменения в объекте Array:

  • Если Вы специфицируете единственный числовой параметр в конструкторе Array, Вы тем самым специфицируете начальный размер массива.
  • Метод push возвращает новый размер массива, а не последний добавленный в массив элемент.
  • Метод splice всегда возвращает массив, содержащий удалённые элементы, даже если удаляется только один элемент.
  • Метод toString объединяет массив и возвращает строку, содержащую все элементы массива, разделённые запятыми, а не строку, представляющую исходный код массива.
  • Свойство length содержит беззнаковое 32-битное целое число, имеющее значение меньше 232.

Изменения в объекте Date:

  • Устранена зависимость от платформы, что даёт универсальное поведение на всех платформах.
  • Изменён диапазон дат: от -100,000,000 до 100,000,000 относительно даты 01 января 1970 UTC.
  • Добавлен параметр milliseconds в конструктор Date.
  • Добавлены методы getFullYear, setFullYear, getMilliseconds и setMilliseconds.
  • Добавлены методы getUTCDate, getUTCDay, getUTCFullYear, getUTCHours, getUTCMilliseconds, getUTCMinutes, getUTCMonth, getUTCSeconds, setUTCDate, setUTCFullYear, setUTCHours, setUTCMilliseconds, setUTCMinutes, setUTCMonth, setUTCSeconds и toUTCString.
  • Добавлен параметр в метод setMonth.
  • Добавлены параметры minutes, seconds и milliseconds в метод setHours.
  • Добавлены параметры seconds и milliseconds в метод setMinutes.
  • Добавлен параметр milliseconds в метод setSeconds.
  • Добавлен параметр milliseconds в метод UTC.
  • Не рекомендуются методы getYear, setYear и toGMTString.

Изменения в объекте Function:

  • Добавлен метод apply, который позволяет примерять метод одного объекта в контексте другого объекта (вызывающего объекта).
  • Добавлен метод call, который позволяет вызывать (выполнять) метод одного объекта в контексте другого объекта (вызывающего объекта).
  • Не рекомендуется свойство arguments.caller.

Изменения в объекте String:

  • Методы charCodeAt и fromCharCode используют значения Unicode, а не ISO-Latin-1.
  • Метод replace поддерживает вложение функций вместо второго аргумента.

Новый метод toSource. Метод toSource возвращает строку, представляющую исходный код объекта.

Новые свойства верхнего уровня: Infinity, NaN и undefined. Infinity это числовое значение, представляющее бесконечность. NaN это значение, представляющее Not-A-Number/Не-Число. undefined это значение undefined/неопределённое.

Новая функция верхнего уровня isFinite. isFinite вычисляет аргумент, чтобы определить, является ли он конечным числом.

Изменения в функции верхнего уровня eval. Нельзя использовать функцию eval неявно, вызывая её по имени, отличному от eval.

Новые операции строго равенства: === и !==. Операция === (строго равно) возвращает true, если операнды равны и имеют один тип. Операция !== (строго не равно) возвращает true, если операнды не равны и/или разных типов.

Изменения в операциях == и !=. Использование операций == (равно) и != (не равно) вернулось к тому, что было в JavaScript 1.1. Если два операнда имеют разные типы, JavaScript пытается конвертировать операнды в подходящий тип для проведения сравнения.

Изменения в поведении проверки условия:

  • Вы не должны использовать простые присвоения в условном операторе; например, не специфицируйте условие if(x = y). Предыдущие версии JavaScript конвертировали if(x = y) в (x == y), но 1.3 генерирует ошибку времени выполнения. См. "if...else".
  • Любой объект, значение которого не undefined или null, включая объект Boolean, значение которого false, вычисляется в true при передаче в условный оператор. См. "Boolean".

Консоль JavaScript. Консоль JavaScript это окно, выводящее все сообщения об ошибках JavaScript. Когда возникает ошибка JavaScript, сообщение об этом направляется на консоль JavaScript, и никакие диалоги не выводятся.

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

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

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

Добавлены следующие улучшения в регулярных выражениях:

  • Квантификаторы +, *, ? и {} могут иметь теперь после себя ? для форсирования их в нежадные.
  • Незахватывающие скобки, (?:x) могут использоваться вместо захватывающих скобок (x). Если используются незахватывающие скобки, совпадающие подвыражения недоступны как обратные ссылки.
  • Положительные и отрицательные "смотрящие вперёд утверждения" поддерживаются. И те, и другие подтверждают совпадение, в зависимости от того, что идёт после совпавшей подстроки.
    • Флаг m был добавлен, чтобы дать возможность специфицировать, что регулярное выражение должно совпадать на нескольких строках.
    • Объявление условной функции. Функции могут теперь объявляться внутри if.
    • Функции выражения. Функции могут теперь объявляться внутри выражения.
    • Несколько переходов catch поддерживаются теперь внутри оператора try...catch.
  • Getter'ы и Setter'ы. Теперь в JavaScript можно добавлять их к объектам. Эта возможность имеется только в C-реализации JavaScript.
  • Константы. Теперь поддерживаются именованные константы "только для чтения". Эта возможность имеется только в C-реализации JavaScript


HIVE: All information for read only. Please respect copyright!
Hosted by hive КГБ: Киевская городская библиотека