ÐÐ±Ð·Ð¾Ñ JavaScript
Ðведение
ÐÑли HTML опÑеделÑÐµÑ ÑÑÑÑкÑÑÑÑ Ð¸ конÑÐµÐ½Ñ Ð²ÐµÐ±-ÑÑÑаниÑÑ, а CSS задаÑÑ ÑоÑÐ¼Ð°Ñ Ð¸ внеÑний вид, Ñо JavaScript добавлÑÐµÑ Ð¸Ð½ÑеÑакÑивноÑÑÑ Ð¸ ÑоздаÑÑ Ð±Ð¾Ð³Ð°ÑÑе веб-пÑиложениÑ.
Ðднако, под обÑим ÑеÑмином "JavaScript", в конÑекÑÑе веб-бÑаÑзеÑа, понимаÑÑÑÑ Ð½ÐµÑколÑко оÑÐµÐ½Ñ ÑазнÑÑ Ð²ÐµÑей. Ðдна из Ð½Ð¸Ñ - ÑÑо базовÑй ÑзÑк пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (ECMAScript), а дÑÑÐ³Ð°Ñ - коллекÑÐ¸Ñ Web APIs, вклÑÑÐ°Ñ DOM (ÐбÑекÑно-оÑиенÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð´Ð¾ÐºÑменÑа).
JavaScript, базовÑй ÑзÑк пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (ECMAScript)
ÐазовÑй ÑзÑк JavaScript ÑÑандаÑÑизиÑован комиÑеÑом ECMA TC-39 как ÑзÑк пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´ названием ECMAScript.
ÐазовÑй ÑзÑк Ñакже иÑполÑзÑеÑÑÑ Ð² не-бÑаÑзеÑном окÑÑжении, напÑимеÑ, в node.js.
ЧÑо Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð¿Ð¾Ð´ понÑÑие ECMAScript?
ÐÑоме пÑоÑего, ECMAScript опÑеделÑеÑ:
- СинÑакÑÐ¸Ñ ÑзÑка (пÑавила паÑÑинга, клÑÑевÑе Ñлова, поÑÑдок вÑполнениÑ, иниÑиализаÑÐ¸Ñ Ð¾Ð±ÑекÑа лиÑеÑала...)
- ÐÐµÑ Ð°Ð½Ð¸Ð·Ð¼ обÑабоÑки оÑибок (иÑклÑÑениÑ, try/catch опеÑаÑоÑ,возможноÑÑÑ ÑоздаваÑÑ Ð½Ð¾Ð²Ñе ÑÐ¸Ð¿Ñ Ð¾Ñибок)
- Ð¢Ð¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ (логиÑеÑкие, ÑиÑла, ÑÑÑоки, ÑÑнкÑии, обÑекÑÑ...)
- ÐлобалÑнÑй обÑекÑ. РбÑаÑзеÑаÑ
глобалÑнÑм обÑекÑом ÑвлÑеÑÑÑ
window, но ECMAscript опÑеделÑÐµÑ ÑолÑко Ñе APIs, коÑоÑÑе не ÑвлÑÑÑÑÑ ÑпеÑиÑиÑеÑкими Ð´Ð»Ñ Ð±ÑаÑзеÑа, какparseInt,parseFloat,decodeURI,encodeURI... - ÐÐµÑ Ð°Ð½Ð¸Ð·Ð¼ пÑоÑоÑипного наÑледованиÑ
- ÐÑÑÑоеннÑе обÑекÑÑ Ð¸ ÑÑнкÑии (JSON, Math, Array.prototype меÑодÑ, меÑÐ¾Ð´Ñ Ñамоанализа обÑекÑа...)
- СÑÑогий Ñежим
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, можно Ñакже найÑи:
- СÑÑÑкÑÑÑÑ Ð´Ð¾ÐºÑменÑа, дÑевовиднÑÑ Ð¼Ð¾Ð´ÐµÐ»Ñ, и аÑÑ
иÑекÑÑÑÑ ÑобÑÑий 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 позволÑÐµÑ Ð¾ÑпÑавлÑÑÑ Ð°ÑÐ¸Ð½Ñ ÑоннÑе HTTP запÑоÑÑ.
- ÐбÑекÑÐ½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ CSS абÑÑÑагиÑоваÑÑ CSS-пÑавила как обÑекÑÑ
- WebWorkers обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð²Ñполнение паÑаллелÑнÑÑ Ð²ÑÑиÑлений.
- WebSockets обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð½Ð¸Ð·ÐºÐ¾ÑÑовневое двÑнапÑавленное Ñоединение.
- Canvas 2D Context ÑÑо API Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑлеменÑа
<canvas>..