Autor Zpráva
RastyAmateur
Profil
Dobré odpoledne,

nikdy jsem neměl potřebu učit se javascript. Vystačil jsem si s alert() a pár funkcemi z jQuery. Avšak v poslední době mě především díky stránce jecas ten javascript nějak láká. Našel jsem si dokumentaci (konkrétně na stránce devdocs.io, přijde mi téměř dokonalá, krásně se v ní vyznám) a začal jsem řešit i konkrétní problémy, které mě zajímaly.

Nedávno jsem tu měl otázku na javu a její tečky. V javascriptu jsem našel uplně to samé. Nyní již vím, že to je jako v php šipka (->). To ještě chápu. Chápu i to, proč a kde se to používá... Ovšem nechápu jednu věc.

Narazil jsem na ní, když jsem hledal, jak se pomocí js dá upravit URL adresa v prohlížeči bez obnovení stránky. Našel jsem toto. Jak můžete vidět, používá se tam "window.history.pushState()". A má otázka zní: Proč tam jsou ty tečky (nevím, jak se jim řiká odborně) dvě?

Hledal jsem na již zmíněné dokumentaci, ale tam byly metody history.pushState() a window.history jako rozdílné...

Děkuji
Chamurappi
Profil
Reaguji na RastyAmateura:
V proměnné window je globální objekt, ten se nemusí uvádět, ale může. Takže history a window.history a window.window.window.window.history jsou totéž…
RastyAmateur
Profil
Chamurappi:
Aha! Předpokládám, že je více takovýchto proměnných. Naleznu někde jejich seznam?

Předpokládám tedy, že window.history.pushState() a history.pushState() je ekvivalentní zápis.

Jen taková otázka ještě. Hádám, že odpověď na ní stejně nepochopím. Jak je možné, že se může a nemusí psát?
anonymníí
Profil *
RastyAmateur:
Jak je možné, že se může a nemusí psát?
Nebude ti stačit brát to jako fakt? Středník na konci řádku taky můžeš a nemusíš psát. Odborné technické vysvětlení pro to nemám, dokumentaci neznám, ale jsem schopen na to přistoupit jako na fakt.

Jen tak mimochodem, u alertu ti ten window objekt nechyběl? :-)
RastyAmateur
Profil
anonymníí:
No nechyběl no :-) nevybavuji si, že bych někde kdy viděl window.alert(). Ale máš nejspíš pravdu v tom, že nejlepší bude to brát prostě jako fakt :-)

Ještě bych se tedy ale zeptal na 2 věci, existuje-li nějaký ten seznam (v případě, že window není jediná proměnná), a zda-li existují funkce/metody, kde to window musí být.

děkuji
Chamurappi
Profil
Reaguji na RastyAmateura:
Předpokládám, že je více takovýchto proměnných. Naleznu někde jejich seznam?
Z hlavy mě napadají jen window, self a frames. Ve všech je vždy tentýž globální objekt. Může být i v top, pokud stránka není uvnitř rámu.

Jak je možné, že se může a nemusí psát?
Nějaký globální objekt být musí. Na příklad metody parseInt a parseFloat jsou i podle specifikace ECMAScriptu (což je standard definující samotný JS, bez návaznosti na prohlížeče) navěšené na globálním objektu. ECMAScript pro ten objekt ale nedefinuje žádný speciální název a obecná univerzální cesta k němu je poněkud nepohodlná.

V prohlížečích je tento globální objekt odjakživa přiřazený do globální proměnné window. Tohle uchopitelnější pojetí je užitečné v případech, kdy se pracuje s více oddělenými stránkami najednou: autor webu může otevírat nová okna (window.open vrací nové window) a pak i volat funkci z jednoho window v druhém window apod., případně komunikovat mezi rámy. Připomínám, že JavaScript vznikl v Netscape Navigatoru 2.0 v březnu 1996, společně s <frameset>em.


Reaguji na anonymníího:
Odborné technické vysvětlení pro to nemám, dokumentaci neznám, ale jsem schopen na to přistoupit jako na fakt.
Tak pardon, že jsem to zkusil vysvětlit. Příště budeme brát všechno jako fakt :-)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: