--- title: Обзор JavaScript slug: Web/JavaScript/JavaScript_technologies_overview translation_of: Web/JavaScript/JavaScript_technologies_overview ---
{{JsSidebar("Introductory")}}

Введение

Если HTML определяет структуру и контент веб-страницы, а CSS задает формат и внешний вид, то JavaScript добавляет интерактивность и создает богатые веб-приложения. 

Однако, под общим термином "JavaScript", в контексте веб-браузера, понимаются несколько очень разных вещей. Одна из них - это базовый язык программирования (ECMAScript), а другая - коллекция Web APIs, включая DOM (Объектно-ориентированная модель документа).

JavaScript, базовый язык программирования (ECMAScript)

Базовый язык JavaScript стандартизирован комитетом ECMA TC-39 как язык программирования под названием ECMAScript.

Базовый язык также используется в не-браузерном окружении, например, в node.js.

Что попадает под понятие ECMAScript?

Кроме прочего, ECMAScript определяет:

Браузерная поддержка

На октябрь 2016, текущие версии основы веб-браузеров включали ECMAScript 5.1 и ECMAScript 2015, но более старые версии (все еще находящиеся в использовании) реализуют только ECMAScript 5.

Будущее

Главное 6-ое издание ECMAscript было официально одобрено и опубликовано как стандарт 17 июня 2015 года на собрании ECMA General Assembly. С тех пор выпуски ECMAscript публикуются на ежегодной основе.

API по интернационализации

Спецификация ECMAScript для API по интернационализации - дополнение к языковой спецификации ECMAScript, также стандартизированной Ecma TC39. API по интернационализации обеспечивает сопоставление (строковое сравнение), форматирование чисел, дат и времени для приложений на JavaScript, позволяя выбирать язык и проектировать функционал в зависимости от нужд. Начальный стандарт был одобрен в декабре 2012; статус реализации в браузерах ведется в документации Intl object. Спецификация по интернационализации сейчас также утверждается на ежегодной основе, и браузеры постоянно улучшают ее реализацию.

DOM APIs

WebIDL

Спецификация WebIDL является связующим звеном между технологиями DOM и ECMAScript.

Ядро DOM

Объектно-ориентированная модель документа (DOM) это кросс-платформенное, языково-независимое соглашение по представлению объектов и взаимодействию с ними в документах HTML, XHTML и XML. Объект в DOM-дереве может быть адресован и обработан с помощью своих методов. Ядро Объектно-ориентированной модели документа стандартизируется W3C и определяет языково-независимые интерфейсы, абстрагирующие HTML и XML документы как объекты, и механизмы для управления этой абстракцией. Кроме прочих вещей, опряденных в DOM, можно также найти:

С точки зрения ECMAScript, объекты определенные в спецификации DOM называются объектами среды исполнения ("host objects").

HTML DOM

HTML, это язык разметки Web, который определен в терминах DOM/ is specified in terms of the DOM. Layered above the abstract concepts defined in DOM Core, HTML also defines the meaning of elements. The HTML DOM includes such things as the className property on HTML elements, or APIs such as {{ domxref("document.body") }}.

The HTML specification also defines restrictions on documents; for example, it requires all children of a ul element, which represents an unordered list, to be li elements, as those represent list items. In general, it also forbids using elements and attributes that aren't defined in a standard.

Другие API, заслуживающие внимания

Поддержка браузерами

Каждый разработчик сталкивавшийся с DOM понимает как там все безнадёжно. Реализация той иной функциональности может отличаться, а следовательно и поведение. Главной причиной этого послужило то, что само описание спецификации DOM, было недостаточно ясным и подробным для разработчиков браузеров. Кроме того разные производители браузеров добавили несовместимые функциональности в своих браузеры или функциональности перекрывающие друг друга (например модель событий в IE). В данный момент консорциум W3C и частично WHATWG пытаются описать детально поведение тех или иных функций, чтобы улучшить совместимость между браузерами. Следуя этой тенденции, можно надеяться что браузеры улучшат свои реализации основываясь на этих спецификациях.

Наиболее общий, но возможно не самый надежный способ улучшить кроссбраузерную совместимость это воспользоваться библиотеками JavaScript. Эти библиотеки абстрагируют вас от особенностей реализации DOM в том или ином браузере, и гарантируют, что их API работает одинаково в разных браузерах. Наиболее распространенные из них это jQuery и prototype.