JavaScript: Porovnání verzí
Smazaný obsah Přidaný obsah
{{Možná hledáte|programovací jazyk Java}} |
wikifikace |
||
Řádek 24:
Nyní se zpravidla používá jako [[interpret (software)|interpretovaný]] [[programovací jazyk]] pro [[World Wide Web|WWW]] stránky, často vkládaný přímo do [[HyperText Markup Language|HTML]] kódu stránky. Jsou jím obvykle ovládány různé interaktivní prvky [[Grafické uživatelské rozhraní|GUI]] (tlačítka, textová políčka) nebo tvořeny animace a efekty obrázků.
Jeho [[Syntaxe (programovací jazyk)|syntaxe]] (zápis [[Zdrojový kód|zdrojového textu]]) patří do rodiny jazyků [[C (programovací jazyk)|C]]/[[C++]]/[[Java (programovací jazyk)|Java]]. Ale JavaScript je od těchto jazyků zásadně odlišný, [[Sémantika programovacích jazyků|sémanticky]] (funkčně, pricipiálně) jde o jiný jazyk. Slovo Java je součástí jeho názvu pouze z marketingových důvodů. JavaScript byl v červenci
JavaScript byl původně obchodní název implementace společnosti Netscape, kde byl vyvíjen nejprve pod názvem Mocha, později LiveScript, ohlášen byl společně se společností [[Sun Microsystems]] v prosinci 1995 jako doplněk k jazykům [[HyperText Markup Language|HTML]] a [[Java (programovací jazyk)|Java]]. Pro verzi firmy [[Microsoft]] je použit název JScript. Ten je podporován platformou [[.NET]].
Program v JavaScriptu se obvykle spouští až po stažení WWW stránky z [[Internet]]u (tzv. na straně klienta), na rozdíl od ostatních jiných interpretovaných programovacích jazyků (např. [[PHP]] a [[Active Server Pages|ASP]]), které se spouštějí na straně [[server]]u ještě před stažením z Internetu. Z toho plynou jistá bezpečností omezení, JavaScript např. nemůže pracovat se soubory, aby tím neohrozil soukromí uživatele.
JavaScript je možné použít i na straně [[server]]u. První implementací JavaScriptu na straně serveru byl [[LiveWire]] firmy Netscape vypuštěný roku
Kromě [[DHTML]] se JavaScript používá k psaní rozšíření pro mnohé aplikace, například [[Adobe Acrobat]].
Řádek 41:
==== Dynamické přiřazení typů (Dynamic typing) ====
Stejně jako ve většině skriptovacích jazyků, jsou typy asociovány s hodnotami místo [[Proměnná|proměnných]]. Kupříkladu proměnné <
==== Objekty jako asociativní pole (objects as associative fields) ====
JavaScript je převážně objektově založený. Objekty jsou asociativními [[
==== Runtime evaluation (= míra možných akcí proveditelných za běhu programu) ====
Řádek 54:
==== Funkce první třídy (first-class functions) ====
Označení funkce první třídy vyjadřuje, že funkce jsou samy o sobě také objekty. Jako takové, mají tedy své atributy a mohou být předány dále, anebo s nimi lze manipulovat jako s kterýmkoli jiným objektem. Níže jsou uvedeny další významy funkcí (jako [[konstruktor]]y a [[
==== Anonymní (vnitřní) funkce a uzávěry (closures) ====
Vnitřní
=== Prototypové (prototype-based) ===
==== Prototypy (Prototypes) ====
Přestože JavaScript nedisponuje klasickým konceptem
==== Funkce jako konstruktory objektů (Functions as constructors) ====
Funkce tedy mají v JavaScriptu kromě své běžné role význam jako [[konstruktor]]y objektů. Voláním konstruktoru pomocí operátoru new se pak vytvoří nový objekt ([[Instance třídy|instance]]). Vlastnost objektu se deklaruje přes klíčové slovo <
Příklad konstruktoru třídy <
<source lang="JavaScript">
Řádek 87:
==== Funkce jako metody (Functions as methods) ====
Na rozdíl od většiny objektově orientovaných jazyků, u JavaScriptu nerozlišuje mezi definicí metody a definicí funkce. Znatelný rozdíl však vyvstane při volání – funkce může být volána jako metoda. Je-li funkce volána jako metoda objektu, je se svým objektem svázána klíčovým slovem <
==== Dědičnost (Inheritance) ====
Řádek 93:
Ačkoliv má JavaScript určité prvky dědičnosti, nejedná se o klasickou dědičnost známou z typových jazyků C++ nebo Java. JavaScript nepodporuje zápis tříd (pouze konstruktor) a s tím spojenou hierarchii tříd, proto lze hovořit spíše o jakési simulaci (viz oddíl prototypy výše) dědičnosti, nazvanou dědičnost prototypová. Prototyp slouží jako zvláštní objekt, který je přidružen každé funkci (tedy i k funkci jako konstruktoru). Všechny objekty inicializované skrze nějaký konstruktor dědí, respektive sdílejí, vlastnosti a metody obsažené právě v prototypu daného konstruktoru.<br />
Podíváte-li se zpět na zápis konstruktoru <
<source lang="JavaScript">
// Definice konstruktoru
Řádek 105:
</source><br />
Systém dědičnosti nadřazených a podřazených tříd sice v JS neexistuje, ale pomocí prototypů ji lze úspěšně simulovat. Celý princip dědění spočívá v tvorbě nových prototypů. Máme-li třídu <
<source lang="JavaScript">
function VesmirnyObjekt(soustava) {
Řádek 131:
==== Výjimky (Exceptions) ====
Rysem společným s objektově orientovanými jazyky jsou také výjimky. Jedná se o mechanismus zachytávání stavů vyvolaných chybným kódem, například přístupem k neexistující metodě. Tyto chyby lze zachytávat pomocí klíčových slov <
<source lang="JavaScript">
function Person(name) {
Řádek 148 ⟶ 149:
}
</source>
Je však dobrým zvykem vyvolávat výjimky s typem Error či podobnými.
== Rozšíření asm.js ==
Asm.js je podmnožina programovacího jazyka JavaScript navržená [[Mozilla|Mozillou]]<ref>http://asmjs.org/ Homepage (anglicky)</ref>, která je určena pro výrazné zrychlení běhu javascriptových [[Aplikační software|aplikací]], podobně jako technologie NaCl a jazyk Dart od Google. Rychlost v současné době dosahuje na hodnoty jen asi o
| | | | | datum_vydání = 2013-12-23 | url = http://www.linuxexpres.cz/novinky/asm-js-zrychluje | datum_přístupu = 2018-05-18}}</ref>, zejména původně napsaných pro hry z oblasti PC<ref> | příjmení1 = Urban
</ref>, typicky napsané v jazyce [[C (programovací jazyk)|C]] nebo [[C++]].▼
| jméno1 = Petr
| titul = Epic Games ve spolupráci s Mozillou v prohlížeči zprovoznil Unreal Engine 4
| periodikum = Cnews.cz
| datum_vydání = 2014-03-13
| url = https://www.cnews.cz/epic-games-ve-spolupraci-s-mozillou-v-prohlizeci-zprovoznil-unreal-engine-4/
▲ | datum_přístupu = 2018-05-18}}</ref>, typicky napsané v jazyce [[C (programovací jazyk)|C]] nebo [[C++]].
Prohlížeče, které tuto podmnožinu JavaScriptu podporují, jsou v současné době, [[Mozilla Firefox]], [[Google Chrome]], [[Opera (webový prohlížeč)|Opera]] a [[Microsoft Edge|Microsoft Edge]].<ref>{{Citace elektronického periodika
| autor1 = mbest | titul = Chrome and Opera Optimize for Mozilla-Pioneered Asm.js | periodikum = Future Releases | url = https://blog.mozilla.org/futurereleases/2013/11/26/chrome-and-opera-optimize-for-mozilla-pioneered-asm-js/ | | </ref><ref>{{Citace elektronického periodika
| titul = Microsoft announces asm.js optimizations
| periodikum = Luke Wagner's Blog
| vydavatel = [[Mozilla Firefox]]
| datum_vydání = 2015-02-18
| url = https://blog.mozilla.org/luke/2015/02/18/microsoft-announces-asm-js-optimizations/
| datum_přístupu = 2018-05-18
| jazyk = anglicky}}</ref><ref>{{Citace elektronického periodika
| příjmení1 = Pflug
| jméno1 = Kyle
| titul = Introducing EdgeHTML 13, our first platform update for Microsoft Edge
| periodikum = [[Microsoft Windows]]
| datum_vydání = 2015-11-16
| url = https://blogs.windows.com/msedgedev/2015/11/16/introducing-edgehtml-13-our-first-platform-update-for-microsoft-edge/
| datum_přístupu = 2018-05-18
| jazyk = anglicky}}</ref>
== Podpora JavaScriptu ve webových prohlížečích ==
[[Webový prohlížeč]] uživatele dané webové stránky může mít JavaScript explicitně vypnutý, popřípadě je na stránku přistupováno způsobem (daným kombinací daného zařízení, platformy, hardwarových nároků, nebo toho, přistupuje-li člověk či program), který JavaScript nespustí.
Podle údajů firmy Yahoo z roku 2010 je podíl stránek načtených bez spuštění JavaScriptu 1,3 % (celosvětový průměr), od 0,25 % v Brazílii po 2 % v USA.<ref>
| příjmení1 = Hein | jméno1 = Ruud | titul = How Many Users Have JavaScript Disabled | vydavatel = searchenginepeople.com
| datum_vydání = 2010-12-14
| url = https://www.searchenginepeople.com/blog/stats-no-javascript.html
| datum_přístupu = 2018-05-18
| jazyk = anglicky}}</ref>
V rámci tzv. [[webová přístupnost|webové přístupnosti]] by se při vývoji webu mělo vždy dbát na správné zobrazení stránky bez ohledu na podporu skriptování na straně klienta.
Řádek 213 ⟶ 257:
=== Vestavěný scriptovací jazyk ===
* Většina rozšíření pro webové prohlížeče jsou implementováná použitím JavaScriptu, např. rozšíření [[Google Chrome|Chrome]], [[Safari (webový prohlížeč)|Safari]], [[Opera]] atd.
* Některé NoSQL datábáze jako je [[MongoDB]] nebo [[CouchDB]] akceptují dotazy napsané v JavaScriptu.
* [[Adobe Acrobat#Security|Acrobat and Adobe Reader]] podporují JavaScript v souborech typu PDF.
Řádek 221 ⟶ 265:
* Digitální software Apple Logic Pro X audio workstation umožňuje vytvořit vlastní MIDI efekty pluginy pomocí JavaScriptu.
* ECMAScript byl zahrnut v normě VRML97 pro skriptování uzlů souborů VRML.
* Herní engine [[Unity (herní engine)|Unity 3D]] podporuje upravenou verzi JavaScriptu pro skriptování pomocí Mono.<ref>{{Citace elektronické monografie
| url=http://unity3d.com/unity/workflow/scripting
| titul=Unity Scripting
Řádek 235 ⟶ 279:
* Maxwell Render poskytuje skriptovací engine ECMA standardu pro automatizaci úkolů.<ref>THINK! The Maxwell Render Resourcer Center, [http://think.maxwellrender.com/scripting_references-269.html Scripting References]</ref>
* Google Apps Script v tabulkách Google a Google Sites umožňuje uživatelům vytvářet vlastní vzorce, automatizovat opakující se úlohy a také komunikovat s ostatními produkty [[Google]] jako je [[Gmail]]. <ref>Google Apps Script, [http://www.google.com/google-d-s/scripts/scripts.html Welcome to Google Apps Script]</ref>
* Mnoho klientů [[Internet Relay Chat|IRC]], jako je ChatZille nebo XChat, používají JavaScript pro jejich scriptovací činnosti.
* Produkty SpinetiX používají SpiderMonkey JavaScript pro scriptování v SVG souborech.
=== Skriptovací engine ===
* Technologie Active Scripting od [[Microsoft]]u podporuje
* Programovací jazyk [[Java (programovací jazyk)|Java]] v 6. verzi představil balíček <tt>javax.script</tt>, který obsahuje implementaci JavaScriptového enginu [[Rhino (javascriptový engine)|Rhino]]. Java aplikace tak mohou hostit skripty, které přistupují k proměnným a objektům této aplikace, stejně jako webové prohlížeče, kde skripty mohou přistupovat k [[
* Nástroj [[Qt (knihovna)|Qt]] C++ obsahuje modul <tt>QtScript</tt>, který interpretuje
== Vývojové nástroje ==
Vzhledem k tomu, že při programování pro různé webové prohlížeče mohou nastat implementační rozdíly (zvláště v
Debuggery jsou dostupné pro [[Internet Explorer]], [[Mozilla Firefox|Firefox]], [[Safari (webový prohlížeč)|Safari]], [[Google Chrome]], [[Opera]] a [[Node.js]].<ref>{{Citace elektronické monografie | url=http://javascript.about.com/od/problemsolving/ig/JavaScript-Debugging/ | titul=The JavaScript Debugging Console | vydavatel=javascript.about.com | datum vydání=2010-05-28 | datum přístupu=2010-05-28}}</ref><ref>{{Citace elektronické monografie | url=http://www.javascript-debugger.com | titul=SplineTech JavaScript Debugger - an independent standalone JavaScript Debugger | vydavatel=javascript-debugger.com | datum vydání=2013-08-26 | datum přístupu=2013-08-26}}</ref><ref>{{Citace elektronické monografie | url=http://docs.strongloop.com/display/DOC/Debugging+with+Node+Inspector | titul=Debugging with Node Inspector | vydavatel=http://docs.strongloop.com/ | datum přístupu=2014-05-07}}</ref>
== Odkazy ==
|