Обзор JavaScript

Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Введение

JavaScript используется для создания красивых эффектов (и не только) или красивых и богатых вебприложений, тогда как HTML используется для хранения содержимого и его форматирования, а CSS определяет то как будет выглядеть содержимое вебстраницы. Как бы там ни было под широким термином JavaScript понимаются 2 разные вещи. Одна из них это сама основа - язык программирования (ECMAScript), и другая это DOM (Document Object Model).

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

Основа языка JavaScript стандартизировано комитетом ECMA TC-39 как язык программирования под именем ECMAScript. На Март 2011, последняя версия спецификации это ECMAScript 5. Самые распространенные браузеры поддерживают ECMAScript 5, и уже началась частичная экспериментальная поддержка 6й версии ECMAScript. Подробности можно получить на гитхабе.

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

ECMAScript определяет:

  • Синтаксис языка (правила парсирования, ключевые слова, порядок выполнения, инициализацию объекта литерала ...)
  • Механизм обработки ошибок (исключения, try/catch оператор,возможность создавать новые типы  ошибок)
  • Типы данных (логические, числа, строки, функции, объекты...)
  • Глобальные объект. В браузерах, глобальный объект это объект window. Несколько функций привязанных к этому объекту (parseInt, parseFloat, decodeURI, encodeURI...)
  • Механизм наследования основанный на прототипах
  • Встроенные объекты и функции (JSON, Math, Array.prototype методы, методы интроспекции объекта...)
  • Строгий режим

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

На данный момент все широко распространенные браузеры практически полностью поддерживают ECMAScript 5. Подробности можно найти по этому адресу.

Будущее

В данный момент ведется работа на 6й версией ECMAScript ECMAScript Harmony. За прогрессом можно следить здесь.

DOM (Document Object Model)

WebIDL

Спецификация WebIDL это клей между DOM и ECMAScript.

Сердце DOM

Основа DOM стандартизирована W3C. Стандарт определяет програмный интерфейс между синтаксическими конструкциями языкаи представлением документов HTML and XML в виде объектов и механизмы управления этими абстракциями. Помимо этого DOM определяет:

  • Структуру документа в виде дерева, и архитектуру DOM событий в основе DOM: Node(Узел), Element(Элемент), DocumentFragment(Фрагмент документа), Document(Документ), DOMImplementation, Event(Событие), EventTarget, …
  • Более строгое определение архитектуры событий DOM, а также определенные события DOM.
  • Другие вещи, например такие как DOM Traversal и DOM Range.

С точки зрения 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 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 заслуживающие внимания

  • Функции setTimeout и setInterval впервые были определены в интерфейсе Window в стандарте HTML.
  • XMLHttpRequest. API позволяющее посылать асинхронные запросы HTTP.
  • CSS Object Model. CSSOM используется чтобы абстрагировать CSS правила как функции
  • WebWorkers. API которое позволяет выполнять многопотоковые вычисления.
  • WebSockets. API которое позволяет создавать и управлять двунаправленным соединением на низком уровне.
  • Canvas 2D Context. API для рисования с помощью элемента canvas.

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

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

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

Метки документа и участники

 Внесли вклад в эту страницу: fscholz, kichik, askhat, ixidor, uleming
 Обновлялась последний раз: fscholz,