Vážení čtenáři, nyní se scházíme u třetího dílu seriálu o JavaScriptu. O JavaScriptu se dá říci, že je objektový. Slovo objektový jazyk, nebo objektově orientovaný se používá v poslední době hodně často.

Skoro bych mohl napsat, že je na různém software vidět stejně často, jako na různých uměle vyrobených potravinách slovo "přírodní". Je proto možné, že procházejí vašimi ušima stejně jako mnoho jiných reklamních sloganů. Přesto všechno přitom slovo objektový znamená opravdu užitečnou vlastnost.

Protože nechci tento článek přetížit snůškou teorií, vrhneme se na objekty hned z praktického hlediska. Asi nejlépe je, když zvolíme nějaký objekt, a trochu ho rozebereme. Začnu teď objektem, který se jmenuje window. Slovo window znamená v češtině okno, a proto tento objekt slouží pro vykonání akcí, které nějak souvisí s oknem, ve kterém si prohlížíte nějakou tu stránku z internetu.

Zkusme na chvíli zapomenout na JavaScript, a představme si, že jsme v běžném životě. Objekt sám o sobě znamená v pojetí JavaScriptu to samé, co profese u lidí. Stejně tak jako můžete mít profesi pokrývač, nebo zámečník, tak existuje u JavaScriptu objekt window. Pokud ale něco potřebujete udělat, nestačí vám vědět, že potřebujete zámečníka, ale potřebuje nějakého konkrétního člověka, který je zámečníkem. Potřebujete zkrátka třeba pana Nováka, který je zámečníkem.

Podobněje to s objekty, objekt je zkrátka totéž co profese. A samotná profese je málo, potřebujete člověka s touto profesí. V objektovém pojetí se neříká, že potřebujete člověka, ale instanci. A stejně tak, jako máte v reálném životě známé lidi, tak i v JavaScriptu se začíná "známostmi", tedy známýni instancemi.

Vrátím se tedy k objektu window. Největší známou instancí, která je pro vás důležitá je instance s názvem self. Ta zastupuje přesně to okno, ve kterém právě spouštíte JavaScript. Potřebujete-li třeba zavřít okno, řeknete něco v tom smyslu: „Hej, instance self, zavři svoje okno!“. A instance self se probere a zavře svoje okno. A je to.

A teď už jenom zbývá napsat, jak to té instanci říci. Na to existuje v JavaScriptu zápis jméno instance plus tečka plus příkaz:

self.close();

Právě příkaz self.close() znamená přesně to, že instance self má zavřít svoje okno, tedy přesně to, co jsme v lidské řeči na instanci self hulákali o pár odstavců výše.

Protože okno jsme již zavírali v minulém díle, zkusíme si jiný příkaz. Jedním z dalších příkazů je příkaz open, který otevře v novém okně vámi zvolenou stránku. Toto je oblíbený příkaz mnoha erotických serverů, které mají zvláštní zálibu otevřít vám během chvilky mnoho oken s různými výhodnými nabídkami. Samotný příkaz open potřebuje tři další údaje. První je adresa stránky, kterou chceme otevřít. Druhým údajem je jméno okna, k čemu slouží vysvětlím v některém dalším díle, zatím tam prostě napíšeme nějaký text. Třetím údajem je popis, jak to okno má vypadat, například jestli má mít titulek, menu apod. Třetí údaj je nepovinný, takže jeho popis také odložím.

Abychom to mohli zkoumat, uvedu příklad zápisu, jak otevřít okno:

self.open("http://www.interval.cz","okno2");

Pokud byste si to chtěli vyzkoušet, uvádím příklad celé HTML stránky:

<html>
<head>
<title>První pokus</title>
</head>
<body>
<a href="javascript:void self.open(‚http://www.interval.cz‘,’okno2′);">
  Po kliknutí sem se otevře nové okno
</a>
</body>
</html>

Tady si můžete akci vyzkoušet, výsledkem bude otevření nového okna:

Po kliknutí sem se otevře nové okno.

Zkusím tedy podrobněji povyprávět o to, co jsem vlastně dělal. Pravděpodobně jste si všimli, že ačkoli jsem v příkladu zápisu použil uvozovky ", v příkladu HTML stránky jsem použil na tom samém místě apostrofy ‚. Je to proto, že pokud píšu JavaScript přímo do HTML značek, jako je třeba teď značka <a>, nesmím použít uvozovky, protože by docházelo k chybám. Proto je v JavaScriptu naprosto jedno, zda budete texty uzavírat do uvozovek, nebo apostrofů. Pokud tedy píšete dovnitř HTML značek, musíte použít apostrofy. V ostatních případech si můžete vybrat, jak je vám libo.

A když máme nové okno, můžeme ho JavaScriptem i ovládat. V zásadě můžeme libovolné okno ovládat pomocí příkazů objektu window. Musíme jenom získat potřebného sluhu, tedy instanci, která se k oknu váže. Instance self nám ovládá pouze to okno, ve kterém jsme, tedy na nové okno nedosáhne. Musíme si proto nového sluhu vytvořit. Aby to bylo možné, je nejlépe na to myslet už při vytváření nového okna:

novysluha = self.open("http://www.interval.cz","okno3");

Zde jsem přidal název nového sluhy, a pojmenoval jsem ho novysluha. Pro pojmenovávání instancí, jak se správně těmto sluhům říká, můžu zvolit jakékoli jméno, které je platné pro pojmenovávání v programovacích jazycích. Pokud neprogramujete, tak vězte, že jméno se musí skládat jenom z písmen a číslic anglické abecedy, přičemž jméno musí začínat písmenem. Nesmíte tedy používat písmena, která mají háček, nebo čárku. V názvu nesmí být ani mezera, apod.

Pokud jsou mezi vámi odborníci na objektové programování, prosím je o prominutí, že jsem celou situaci trochu zjednodušil, abych o objektech mohl vyprávět, jak se říká, více polopatisticky. Pro vás jde samozřejmě o vytvoření odkazu (reference) na instanci. Nicméně není cílem tohoto článku zatížit čtenáře mnoha termíny naráz, ale umožnit jim, aby dovedli sami aktivně tvořit v JavaScriptu.

Vytvořil jsem si tedy nového sluhu, a veškeré příkazy, které mu dám, provede s nově otevřeným oknem. Pokud budu chtít nově vytvořené okno zavřít, použiji prostě zápis novysluha.close(), a je to. Zkuste si to, nejdříve otevřte nové okno, a pak ho zkuste zavřít:

Po kliknutí sem se otevře nové okno.
Po kliknutí sem se otevřené okno zavře.

Takto si můžete otevřít mnoho oken, a každé z nich můžete ovládat.

Objekt window toho má na starosti poměrně dost, takže jeho příkazy jsou značně různorodé. Například je možné ovládat historii příkazů, můžete volat příkazy za určitý čas, zjišťovat šířku a výšku okna v pixelech, zjišťovat a nastavovat internetovou adresu, načítat nové stránky, apod. O tom všem budeme v dalších dílech psát.

A to je pro tento díl vše.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět