<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Virtage Developer &#187; JavaScript</title>
	<atom:link href="http://devel.virtage.com/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://devel.virtage.com</link>
	<description>Blogging and tutorials on Ajax, Web 2.0, (X)HTML, CSS, JavaScript, Python and PHP</description>
	<lastBuildDate>Sun, 08 Aug 2010 13:42:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>cs: Úvod do JavaScriptu: znovu a konečně správně</title>
		<link>http://devel.virtage.com/2009/01/cs-uvod-do-javascriptu-znovu-a-konecne-spravne/</link>
		<comments>http://devel.virtage.com/2009/01/cs-uvod-do-javascriptu-znovu-a-konecne-spravne/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 19:26:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[překlady]]></category>

		<guid isPermaLink="false">http://devel.virtage.com/?p=33</guid>
		<description><![CDATA[Proč další úvod do JavaScriptu? Třeba protože je to jednoznačně nejnepochopenější programovací jazyk na světě. Často vysmívaný jako hračka, ale za jeho zdánlivou jednoduchostí se skrývají některé skutečně důmyslné a silné vlastnosti. V roce 2005 vznikla řada sofistikovaných JavaScriptových aplikací, které dokázali, že hlubší znalosti této technologie je důležitá pro každého webového vyvojáře.]]></description>
			<content:encoded><![CDATA[<p class="editable"><strong>Proč další úvod do JavaScriptu? Třeba protože je to jednoznačně <a href="http://devel.virtage.com/2009/01/cs-javascript-nejnepochopenejsi-programovaci-jazyk-sveta/">nejnepochopenější programovací jazyk na světě</a>. Často vysmívaný jako hračka, ale za jeho zdánlivou jednoduchostí se skrývají některé skutečně důmyslné a silné vlastnosti. V roce 2005 vznikla řada sofistikovaných JavaScriptových aplikací, které dokázali, že hlubší znalosti této technologie je důležitá pro každého webového vyvojáře.</strong></p>
<p><span id="more-33"></span>Pro začátek je užitečné si připomenout historii jazyka. JavaScript byl vytvořen v roce 1995 inženýrem Netscapu Brendanem Eichem, poprvé byl uveden v Netscape 2 na začátku 1996. Původně se měl jmenovat LiveScript, ale byl nesmyslně přejmenován na JavaScript kvůli marketingovému rozhodnutí využít popularity Javy firmy Sun Microsystems &#8211; ač mají oba jazyky pramálo společného. Už tohle je zdrojem neporozumění.</p>
<p>Microsoft o několik měsíců později uvedl svůj klon pojmenovaný JScript spolu s IE 3. Netscape předal jazyk evropské standarizační orgranizaci <a class="external" title="http://www.ecma-international.org/" rel="external nofollow" href="http://www.ecma-international.org/" target="_blank">Ecma International</a>, která vydapa první verzi <a rel="internal" href="https://developer.mozilla.org/en/ECMAScript">ECMAScriptu</a> v roce 1997. V roce 1999 byla uvolněná významně rozšířená verze <a class="external" title="http://www.ecma-international.org/publications/standards/Ecma-262.htm" rel="external nofollow" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm" target="_blank">ECMAScript 3. vydání</a>, která je dodnes nejpoužívanější vůbec. Současné době se pracuje na 4. vydání.</p>
<p>Taková &#8220;dlouhověkost&#8221; jedné verze je skvělá pro vývojáře. Já se zaměřím téměř výrahně právě na 3. vydání jazyka ECMAScript. Budu se však držet populárnějšího jména JavaScript.</p>
<p>Narozdíl od většiny programovacích jazyků nemá JavaScript koncept vstupu a výstupu. Je navržet jako čistě skriptovací jazyk &#8220;žijící&#8221; v prostředí hostitelské aplikace a je právě na hostiteli, aby poskytl mechanizmus pro komunikování s okolím. Nejrozšířenějším hostitelem je webový prohlížeš, ale interpreti JavaScriptu najdeme i v Adobe Acrobatu, Photoshopu, Yahoo!&#8217;s Widget engine atd.</p>
<h3 class="editable">Přehled</h3>
<p>Začneme pohledem na stavební bloky jakéhokoli jazyka: datové typy. JavaScript pracuje s hodnotami a ty jsou nějakého typu. V JavaScriptu to jsou tyto datové typy:</p>
<ul>
<li><a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Number">Číslo</a></li>
<li> <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String">Řetězec</a></li>
<li> <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Boolean">Boolean (pravda/nepravda)</a></li>
<li> <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function">Funkce</a></li>
<li> <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object">Objekt</a></li>
</ul>
<p>&#8230; a dva zvláštní typy Undefined and Null. <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array">Pole</a>, které jsou ale speciálním druhem objektů. <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date">Datumy</a> a <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp">Regulární výrazy</a> jsou také objekty. A, když chceme být přesní, tak funkce jsou také jen typ objektů. Takže seznam typů ještě jednou a přesněji:</p>
<ul>
<li>Číslo</li>
<li>Řetězec</li>
<li> Boolean</li>
<li> Object
<ul>
<li> Funkce</li>
<li>Pole</li>
<li>Datum</li>
<li>RegExp (regulární výraz)</li>
</ul>
</li>
<li> Null</li>
<li> Undefined</li>
</ul>
<p>A pak jsou tu pár zabudovaných typu jako <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error">Error</a>. Ale nekomplikujme si to a zůstaňme u prvního seznamu.</p>
<h3 class="editable">Čísla</h3>
<p>Čísla jsou v JavaScriptu dle specifikace &#8220;double-precision 64-bit format IEEE 754 hodnoty&#8221;. To má několik zajímavých důsledků. Není zde nic jako integer (celé číslo), proto se mějte na pozoru v aritmetice naučené z C nebo Javy:</p>
<pre class="eval">0.1 + 0.2 = 0.30000000000000004 (!!!)</pre>
<p>Máte k dispozici klasické <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Arithmetic_Operators">číselné operátory</a> jako přičítání, odčítání, modulus (zbytek po dělení) apod. Také existuje zabudovaný objekt <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Math">Math</a>, který nabízí složitější matematické funkce (cos, sin, apod.) a konstanty (číslo PI apod.):</p>
<pre class="eval">Math.sin(3.5);
d = Math.PI * r * r;</pre>
<p>Řetězec můežte převést na číslo zabudovanou funkcí <code><a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/parseInt">parseInt()</a></code>. První argument je převáděný řetězec, druhý volitelný je základ číselné soustavy (desítková &#8211; 10, osmičková 8, apod.), který se v rámci dobrých zvyků doporučuje vždy specifikovat.</p>
<pre class="eval">&gt; parseInt("123", 10)
123
&gt; parseInt("010", 10)
10</pre>
<p>Když nedodáte základ, můžete se dočkat hodně zajímavých výsledků:</p>
<pre class="eval">&gt; parseInt("010")
8</pre>
<p>Zde <code>parseInt()</code> rozhodl, že řetězec obsahuje číslo v osmičkové soustavě, protože začíná na nulu.</p>
<p>Rovněž převod na binární (2) číslo je prostý:</p>
<pre class="eval">&gt; parseInt("11", 2)
3</pre>
<p>Pro nečíselný vstup je vrácena speciální hodnota <code><a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Properties/NaN">NaN</a></code> (&#8220;Not a Number&#8221;, není číslo):</p>
<pre class="eval">&gt; parseInt("hello", 10)
NaN</pre>
<p><code>NaN</code> je &#8220;nakažlivé&#8221;: když NaN vystuouje v jakékoli matematické operaci, celý výsledek je rovněž NaN:</p>
<pre class="eval">&gt; NaN + 5
NaN</pre>
<p>Jestli, je hodnota NaN můžete zabudouvanou funkcí <code><a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/isNaN">isNaN()</a></code>:</p>
<pre class="eval">&gt; isNaN(NaN)
true</pre>
<p>JavaScript také má speciální hodnoty <code><a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Properties/Infinity">Infinity</a></code> (nekonečno) and <code>-Infinity</code> (-nekonečno):</p>
<pre class="eval">&gt; 1 / 0
Infinity
&gt; -1 / 0
-Infinity</pre>
<h3 class="editable">Řetězce</h3>
<p>Řetězec je sekvence znaků. Přesněji <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Unicode">Unicode znaků</a> čili každý znak je reprezentován 16 bitovým číslem, což je skvělá zpráva pro všechny, kdo se musí zabývat internacionalizací (i18n).</p>
<p>K uložení jednoho znaku je třeba řetězec o délce 1. Délka řetězce je uložena ve vlastnosti <code><a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String/length">length</a></code>:</p>
<p>&gt; &#8220;hello&#8221;.length</p>
<p>5</p>
<p>A teď jsme se poprvé &#8220;dotkli&#8221; JavaScript objektů! Zmínil jsem se, že řetězce jsou také objekty? Proto mají také <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String#Methods">methods</a>:</p>
<p>&gt; &#8220;hello&#8221;.charAt(0)</p>
<p>h</p>
<p>&gt; &#8220;hello, world&#8221;.replace(&#8220;hello&#8221;, &#8220;goodbye&#8221;)</p>
<p>goodbye, world</p>
<p>&gt; &#8220;hello&#8221;.toUpperCase()</p>
<p>HELLO</p>
<div id="section_5">
<h3 class="editable">Další typy</h3>
<p>JavaScript rozlišuje mezi typem<code> null</code>, což je objekt typu &#8221;object&#8217; znamenající, že žádnou hodnotu (non-value), a typem <code>undefined</code>, což je objekt typu &#8216;undefined&#8217; znamenající neinicializovanou  hodnotu — tj., hodnotu, která ještě nebyla přiřazena (určena) proměnné. O proměnných budu  mluvit později, ale v JavaScriptu je možné deklarovat proměnnou i bez přiřazení hodnoty. Pokud tak učiníte, proměná bude právě typu <code>undefined</code>.</p>
<p>Dalším typem JavaScriptu je boolean, jehož hodnoty jsou true (pravda) a false (nepravda) (obojí jsou klíčová slova). Jakákoli hodnota může být převedena na boolean podle následujících pravidel:</p>
<ol>
<li> <code>false</code>, <code>0</code>, prázdný řetězec (<code>""</code>), <code>NaN</code>, <code>null</code>, a <code>undefined</code> &#8211; všechny se převedou na <code>false</code></li>
<li> všechny ostatní hodnoty na <code>true</code></li>
</ol>
<p>Převod lze provést explicitně pomocí funkce <code>Boolean()</code>:</p>
<pre class="eval">&gt; Boolean("")
false
&gt; Boolean(234)
true</pre>
<p>However, this is rarely necessary, as JavaScript will silently perform this conversion when it expects a boolean, such as in an <code>if</code> statement (see below). For this reason, we sometimes speak simply of &#8220;true values&#8221; and &#8220;false values,&#8221; meaning values that become <code>true</code> and <code>false</code>, respectively, when converted to booleans. Alternatively, such values can be called &#8220;truthy&#8221; and &#8220;falsy,&#8221; respectively.</p>
<p>Boolean operations such as <code>&amp;&amp;</code> (logical <em>and</em>), <code>||</code> (logical <em>or</em>), and <code>!</code> (logical <em>not</em>) are supported; see below.</div>
<div id="section_6">
<h3 class="editable">Variables</h3>
<p>New variables in JavaScript are declared using the <code><a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/var">var</a></code> keyword:</p>
<pre class="eval">var a;
var name = "simon";</pre>
<p>If you declare a variable without assigning any value to it, its type is <code>undefined</code>.</div>
<div id="section_7">
<h3 class="editable">Operators</h3>
<p>JavaScript&#8217;s numeric operators are <code>+</code>, <code>-</code>, <code>*</code>, <code>/</code> and <code>%</code> &#8211; which is the remainder operator. Values are assigned using <code>=</code>, and there are also compound assignment statements such as <code>+=</code> and <code>-=</code>. These extend out to <code>x = x <em>operator</em> y</code>.</p>
<pre class="eval">x += 5
x = x + 5</pre>
<p>You can use <code>++</code> and <code>--</code> to increment and decrement respectively. These can be used as prefix or postfix operators.</p>
<p>The <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/String_Operators"><code>+</code> operator</a> also does string concatenation:</p>
<pre class="eval">&gt; "hello" + " world"
hello world</pre>
<p>If you add a string to a number (or other value) everything is converted in to a string first. This might catch you out:</p>
<pre class="eval">&gt; "3" + 4 + 5
345
&gt; 3 + 4 + "5"
75</pre>
<p>Adding an empty string to something is a useful way of converting it.</p>
<p><a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Comparison_Operators">Comparisons</a> in JavaScript can be made using <code>&lt;</code>, <code>&gt;</code>, <code>&lt;=</code> and <code>&gt;=</code>. These work for both strings and numbers. Equality is a little less straightforward. The double-equals operator performs type coercion if you give it different types, with sometimes interesting results:</p>
<pre class="eval">&gt; "dog" == "dog"
true
&gt; 1 == true
true</pre>
<p>To avoid type coercion, use the triple-equals operator:</p>
<pre class="eval">&gt; 1 === true
false
&gt; true === true
true</pre>
<p>There are also <code>!=</code> and <code>!==</code> operators.</p>
<p>JavaScript also has <a rel="internal" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Bitwise_Operators">bitwise operations</a>. If you want to use them, they&#8217;re there.</div>
]]></content:encoded>
			<wfw:commentRss>http://devel.virtage.com/2009/01/cs-uvod-do-javascriptu-znovu-a-konecne-spravne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cs: JavaScript: Nejnepochopenější programovací jazyk světa</title>
		<link>http://devel.virtage.com/2009/01/cs-javascript-nejnepochopenejsi-programovaci-jazyk-sveta/</link>
		<comments>http://devel.virtage.com/2009/01/cs-javascript-nejnepochopenejsi-programovaci-jazyk-sveta/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 14:11:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[překlady]]></category>

		<guid isPermaLink="false">http://devel.virtage.com/?p=18</guid>
		<description><![CDATA[(Překlad slavného článku Douglase Crockforda.) JavaScript, známý také pod jmény LiveScript, JScript a ECMAScript, is je jedním ze světově nejoblíbenějších programovacích jazyků. Prakticky každý počítač na světě má nainstalován nejméně jeden interpret jazyka JavaScript. Popularita JavaScriptu vznikla z jeho role skriptovacího jazyka pro WWW stránky.

I přes tuto obrovskou rozšířenost, je tu jen malé povědomí o JavaScriptu jaku [...]]]></description>
			<content:encoded><![CDATA[<p class="excerpt">(Překlad slavného článku <a href="http://javascript.crockford.com">Douglase Crockforda</a>.) JavaScript, známý také pod jmény LiveScript, JScript a ECMAScript, is je jedním ze světově nejoblíbenějších programovacích jazyků. Prakticky každý počítač na světě má nainstalován nejméně jeden interpret jazyka JavaScript. Popularita JavaScriptu vznikla z jeho role skriptovacího jazyka pro WWW stránky.</p>
<p><span id="more-18"></span></p>
<p>I přes tuto obrovskou rozšířenost, je tu jen malé povědomí o JavaScriptu jaku velmi hezkého dynamicky objektově orientovaného programovacího jazyku určeného zdaleka ne jen pro WWW. Proč tomu tak je a proč je tento jazyk tak pochopen?</p>
<h2>Jméno</h2>
<p><span style="font-style: italic;">&#8220;Java&#8221;</span> v jeho jméně by napovídat, že JavaScript nějak souvisí s Javou, že je to jeho podmnožina nebo odlehčená verze Javy. Matoucí jméno přispívá k tomu, že si lidé myslí, že JavaScript je interpretovaná Java. Ve skutečnosti Java je interpretovaná Java. A JavaScript je naprosto jiný jazyk.</p>
<p>JavaScript má je nicméně syntakticky podobný Java, stejně jako Java je podobná k jazyku C. Ale není to díky tomu podmnožina Javy, stejně jako Java není podmnožina C, kvůi podobnosti syntaxe. Vtipné je, že JavaScript je lepší pro aplikace pro které původně byla Java určena.</p>
<p>JavaScript nebyl dokonce ani vyvinut společností Sun Microsystems, autorem Javy. JavaScript vytvořili v Netscapu a původně se měl jmenoval LiveScript, ale toto jméno nebylo dostatečně matoucí.</p>
<p><span style="font-style: italic;">&#8220;Script&#8221; </span>nám našeptává, že to není skutečný &#8220;velký&#8221; programovací jazyk. Pravda je velmi subjektivní a záleží na úhlu pohledu. V porovnání s C, tak JavaScript vyměnil výkon za silně dynamické vlastnosti.</p>
<h2>Lisp v kabátu C</h2>
<p>JavaScriptová syntaxe podobná C (složené závorky, podoba příkazů jako for apod.) nás ukolébávají, že je to prostě další běžný procedurální jazyk. Chyba lávky, protože JavaScript má mnohem více společného s funkcionálními jazyky jako <a href="http://javascript.crockford.com/little.html">Lisp or Scheme</a>, než s C nebo Javou. Má pole místo seznamů a objekty místo vlastností, funkce jsou provořadě třídy, má uzávěry (closures), není typově striktní (loose type-control).</p>
<h2>Změna</h2>
<p>JavaScript byl navržen k běhu uvnitř Netscape Navigatoru. Jeho úspěch z něj učinil povinnou schopnost pro každý webový prohlížeč. To si muselo vynutit jeho určitou změnu. JavaScript is vlastně takový <a href="http://www.amazon.com/exec/obidos/ASIN/B000KWZ7JC/wrrrldwideweb" target="amazon">George Reeves</a> programovacích jazyků. Dobře se hodí pro velké množství ne-webových aplikací.</p>
<p>První verze JavaScriptu byly funkčně velmi chudé. Neměli prostředky pro zacházení s vyjímkami, vnitřní funkce (inner fuctions) ani dědičnost. Dnešní JavaScript je však kompletně objektově orientovaný programovací jazyk. Bohužel mnoho názoru na jeho schopnosti vychází z nepochopení.</p>
<p>Po Netscapu se dorozu ujala komise organizace ECMA nad dalším vývojem, jeho rozšiřováním a vypořádání se s jeho největším problémem: existencí příliš mnoha verzí vytvářející další zmatekl.</p>
<h2>Chyby v návrhu</h2>
<p>Žádný programovací jazyk není dokonalý. JavaScript není vyjímkou a některým věcem by bylo lepší se vyhnout. Např. příliš mnoho klíčových slov, operátor + znamená jak sčítání čísel, tak spojování řetězců simplicitním vynuceným přetypováním, nebo k chybám náchilný příkaz  <span style="font-family: monospace;">with</span>. Podobné chyby v návrhu jsou příčinou častých programátorských chyb. Naštěstí mnoho těchto problémů se lze vyvarovat dobrý <a href="http://www.crockford.com/javascript/lint.html">lint</a> programem.</p>
<p>Nedokonalostí je poměrně hodně a bohužel komise ECMAScript se příliš k jejím řešením nemá, spíše se zaměřuje na vytváření nových chyb.</p>
<h2>Příšerné implementace</h2>
<p>Některé z dřívějších implementací JavaScriptu byly pořádně chybové a vrhaly špatné světlo na celý jazyk. Ke všemu byly tyto implementace použity v ještě horších chybových webových prohlížečích.</p>
<h2>Příšerné knihy</h2>
<p>Skoro všechny knihy o JavaScriptu jsou prostě příšerné. Obsahují chyby, hloupé příklady, učí špatné praktiky. Důležité vlastnosti jazyka jsou často chabě vysvětleny nebo úplně vynechány. Recenzoval jsem tucty knihy a <span style="font-weight: bold;">jediná kniha, kterou můžu doporučit </span>je <a href="http://www.amazon.com/exec/obidos/ASIN/0596101996/wrrrldwideweb" target="_blank">JavaScript: The Definitive Guide (5. výdání)</a> od Davida Flanagana. (Autoři, pokud jste napsali dobrou chybu, pošlete mi, prosím, váš text.)</p>
<p><span style="font-style: italic;">Poznámka:</span><br style="font-style: italic;" /><span style="font-style: italic;">Český překlad, který vydal Computer Press je velmi zastaralé vydání a vůbec neuvažujte o tom si ho koupit. To znamená, že bohužel neexistuje kniha o JavaScriptu v češtině, která by stála za zmínku.</span></p>
<h2>Příšerný standard</h2>
<p><a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm" target="ecma">Oficiální specifikace jazyka</a> je spravována a publikována organizací <a href="http://www.ecma-international.org/">ECMA</a>. Tato specifikace je mimořádně k ničemu &#8211; nesmírně nepřehledná, a velmi obtížně porozumitělná. Tento fakt mírně zbavuje viny autory knihy. Komise ECMA a TC39 by měli hluboce stydět.</p>
<h2>Amatérismus</h2>
<p>Většina lidí píšící JavaScript nejsou programátoři. Chybí jim vzdělání a disciplína k psaní dobrých programů. JavaScript má mnohem více možností a síly, než jakou jsou schopni využít. To celé přispělo k reputaci JavaScriptu jako jazyku vhodného maximálně pro amatéry, rozhodně ne však pro profesionální programátory. To však jednoduše není pravda.</p>
<h2>Objektová orientovanost</h2>
<p>Je JavaScript objektově orientovaný nebo ne? Má objekty obsahující data a metody pracující nad těmito tady. Objekty mohou obsahovat další objekty. Nemá však třídy, ale má konstruktory, které dělají, to co třídy včetně schopnosti chovat se jako proměnné a metody tříd. Nemá třídní dědičnost (class-oriented), ale má prototypovou (prototyped-oriented).</p>
<p>Hlavní dva pilíře vytváření objektů je dědičnost (je A) a zapouzdření (má A). JavaScript umí oboje a díky dynamické povaze exceluje zejména v zapouzdření.</p>
<p>Někdo argumentuje že JavaScript není skutečný objektově orientovaný jazyk, protože neposkytuje skrývání informací mezi objekty (viditelnost private, protected, public z Javy): všichni členové objektů jsou totiž veřejné.</p>
<p>Ale <a href="http://www.crockford.com/javascript/private.html">JavaScriptové objekty <span style="font-style: italic;">mohou</span> mít soukromé proměnné a metody</a>. Samozřejmě, je potřeba trochu námahy pro pochopení, protože JavaScript je skutečně nejnepochopenější programovací jazyk na světě.</p>
<p>Někdo argumentuje že JavaScript není skutečný objektově orientovaný jazyk, protože neposkytuje dědičnost. Ale <a href="http://javascript.crockford.com/inheritance.html">JavaScript podporuje nejen klasickou dědičnost, ale dokonce i paradigmata ke znovu použití kódu</a>.</p>
<p><em><a href="http://javascript.crockford.com/javascript.html">Originál</a>: Copyright 2001 <a href="mailto:douglas@crockford.com">Douglas Crockford.</a> <a href="http://www.crockford.com/" target="_top">All Rights Reserved Wrrrldwide.</a></em></p>
<p><em>Překlad: copyright © 2009 Virtage Software, Libor Jelínek.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://devel.virtage.com/2009/01/cs-javascript-nejnepochopenejsi-programovaci-jazyk-sveta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
