ECMAScript

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

ECMAScript je skriptovací jazyk normovaný neziskovou organizací ECMA International podle specifikace ISO/IEC 16262:2011. Tento jazyk je využíván především na webových stránkách pro vytváření skriptů na straně klienta. Nyní jsou využívány především jeho implementace jako např. JavaScript, JScript a ActionScript.

Historie[editovat | editovat zdroj]

JavaScript byl původně vyvinut Brendanem Eichem ze společnosti Netscape a byl pojmenován Mocha, později LiveScript a nakonec JavaScript, jak jej známe dnes. V prosinci 1995, Sun Microsystems a Netscape oznámily oficiální vydání JavaScriptu a v březnu 1996 byl vydán webový prohlížeč Netscape Navigator 2.0, který JavaScript plně podporoval.

Vzhledem k velkému úspěchu JavaScriptu reagoval Microsoft vydáním kompatibilního jazyka jménem JScript. Byly přidány metody, které opravily tzv. Y2K problém (neboli problém s interpretací data, počínaje rokem 2000) a vycházely ze třídy Java Date. JScript byl plně podporován prohlížečem Internet Explorer 3.0, který byl vydán v srpnu 1996.

Microsoft následně dodal JScript společnosti ECMA International pro standardizaci a vytvoření specifikace ECMA-262, která začala v listopadu 1996. První verze ECMA-262 byla přijata na valném shromáždění společnosti ECMA v červnu 1997 a od té doby bylo vydáno několik dalších verzí.

Verze[editovat | editovat zdroj]

Doposud je vydáno 5 verzí ECMA-262. Práce na další edici jménem "Harmony" probíhají.

Verze Datum vydání Změny oproti předchozí verzi Editor
1 Červen 1997 První verze Guy L. Steele, Jr.
2 Červen 1998 Pouze menší změny, které umožnily udržet specifikaci plně v normách ISO/IEC 16262 Mike Cowlishaw
3 Prosinec 1999 Přidány regulární výrazy, zlepšená práce s řetězci, nová kontrola deklarací, try/catch výjimky, přísnější definice syntaktických chyb,

formátování pro číselné výstupy a další změny.

Mike Cowlishaw
4 Nevydána Od čtvrté edice bylo upuštěno, kvůli neshodám ohledně složitosti jazyka. Mnoho nových funkcí bylo kvůli tomu odebráno. Některé z nich jsou navržené pro zahrnutí do nové verze "Harmony".
5 Prosinec 2009 Byl přidán tzv. "strict mode", funkce, která umožnila přísnější a účinnější detekci chyb. Tím bylo možné se vyvarovat chyb po překladu.

Dále se zde objevily definice nových programátorských postupů, jako např. "getters" a "setters", což jsou typické konstrukty například objektového jazyka Java, nebo C++.

Pratap Lakshman, Allen Wirfs-Brock
5.1 Červen 2011 Tato edice 5.1 ECMAScript Standard funguje přesně dle mezinárodního standardu ISO/IEC 16262:2011 Pratap Lakshman, Allen Wirfs-Brock
6 Ve vývoji Šestá edice přidává novou velmi významnou syntaxi pro psaní aplikací, která obsahuje třídy a moduly, jež jsou ale definovány sémanticky stejně jako v ECMAScript 5 strict mode. Mezi další nové funkce patří například iterátory, generátory výjimek a kolekce, což jsou opět velmi podobné, ne-li stejné funkce, jaké přináší moderní objektově orientované programovací jazyky Java, C++. Allen Wirfs-Brock

Syntaxe[editovat | editovat zdroj]

Jak již bylo zmíněno, syntaxe ECMAScriptu je v mnohém podobná jako programovací jazyky Java nebo C++. Příklad práce s for cyklem:

 for(i = 0; i < a.length; i++) {
     if (a[i] == x)
         return i;

Objektově orientované programování (volání funkcí):

 window.setTitle(user.name);

Funkce ECMAScriptu jsou objekty a mohou být uložené jako proměnné, použité jako argumenty funkce a nebo vráceny jako výsledek. Tento fakt přináší výhodu v tom, že funkce a metody mohou importovat různé funkcionality volanému objektu.

 var recent = posts.sort(function(a, b) {
                           return (a.date > b.date ? -1 : 1);
                       }).slice(0, 10);

Objekty mají prototypy:

 function Car() { }
   Car.prototype = new Object();
   Car.prototype.wheels = 4;
   Car.prototype.color = "black";
   function RaceCar() { }
   RaceCar.prototype = new Car();
   RaceCar.prototype.color = "red";
   var vroom = new RaceCar();
   vroom.wheels // 4
   vroom.color  // "red"

Vlastnost prototype obsahuje odkaz na takzvaný objektový prototyp, datovou strukturu definující vlastnosti a objekty společné všem objektům vytvořeným stejným konstruktorem.

Pole:

 var digits = [3, 1, 4, 1, 5, 9];

Objekty:

 var img = { width: 320, height:160, src: "images/es.png" };

Regulární výrazy:

 var email = /([^@]*)@([^@]*)/;