Úloha 3 – Porovnání metod new Object(), konstruktor a Object.create()
| Website: | Moodle ZČU |
| Kurs: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Buch: | Úloha 3 – Porovnání metod new Object(), konstruktor a Object.create() |
| Gedruckt von: | Nepřihlášený host |
| Datum: | Sonntag, 18. Oktober 2026, 13:19 |
Úvod do úlohy
Jakmile si studenti osvojí vytváření objektů pomocí objektového literálu, je vhodné ukázat i další možnosti. Tyto alternativní způsoby sice nejsou v praxi pro jednoduché scénáře tak běžné, ale pomáhají pochopit, jak JavaScript s objekty pracuje pod povrchem. Navíc se s nimi můžete setkat ve starších kódech nebo při čtení dokumentace. Důležité je rozlišit, kdy je vhodné použít literál a kdy naopak oceníme konstruktorovou funkci či Object.create().
Teorie a principy
-
new Object()
-
Vytváří prázdný objekt pomocí vestavěného konstruktoru.
-
Lze do něj přidávat vlastnosti postupně.
-
Syntaxe je delší a méně přehledná než literál.
-
-
Konstruktorová funkce
-
Definujeme funkci, která nastaví výchozí hodnoty vlastností.
-
Použitím
newvytvoříme instanci objektu se stejným „plánem“. -
Dává smysl, když chceme vytvořit více podobných objektů.
-
-
Object.create()
-
Umožňuje vytvořit nový objekt, který má jako prototyp jiný objekt.
-
Hodí se pro explicitní práci s dědičností prototypů.
-
Je užitečné pochopit, ale pro začátečníky může působit složitě.
-
-
Literál
-
Nejkratší a nejpřehlednější zápis pro běžné případy.
-
Používá se ve většině moderního kódu.
-
Praktické příklady kódu
Typické chyby / záludnosti
-
Zapomenutí klíčového slova
newu konstruktorové funkce: -
Nepochopení rozdílu mezi vlastnostmi a prototypem – vlastnosti nastavené přes
Object.create()mohou být „zděděné“ z prototypu, a tedy nejsou přímo zapsány v samotném objektu. -
Používání new Object() tam, kde je lepší literál – literál je stručnější a čitelnější.
Shrnutí
-
Objekty lze tvořit více způsoby, ale nejpřehlednější je literál.
-
new Object()je zastaralejší a zbytečně ukecaný způsob. -
Konstruktorová funkce umožňuje vytvářet více podobných instancí se stejnou strukturou.
-
Object.create()je silný nástroj pro práci s prototypovou dědičností. -
V běžné praxi pro jednoduché objekty zůstaňte u literálu, ostatní techniky slouží spíše pro speciální případy nebo hlubší pochopení jazyka.
Úloha
Zadání (kontext úlohy):
Chceš vytvořit malý program, který uchovává informace o uživatelích webu. Úkolem je vyzkoušet si tři různé způsoby tvorby objektů a ukázat, že výsledkem je vždy objekt se stejnými vlastnostmi, ale jiným stylem zápisu.
Cíl úlohy:
Procvičit si práci s objekty vytvořenými různými metodami, naučit se rozdíly mezi nimi a porovnat výsledky výpisem do stránky.
Vstupní podmínky:
-
Student pracuje se soubory
index.htmlascript.js. -
Do stránky bude vypisovat pomocí
document.write().
Požadovaný výstup:
-
Pomocí
new Object()vytvoř objektuzivatel1, přidej mu vlastnostijmeno,vekaemail. -
Napiš konstruktorovou funkci
Uzivatel, která nastaví vlastnostijmeno,vekaemail. Pomocínewvytvoř instanciuzivatel2. -
Pomocí
Object.create()vytvoř objektuzivatel3, který zdědí vlastnostrole: "návštěvník"z prototypu. Doplň mu vlastní vlastnostijmenoavek. -
Vypiš do stránky vlastnosti všech tří uživatelů v přehledném formátu (každý uživatel na samostatném řádku).
-
Přidej do
uzivatel2novou vlastnost (např.aktivni: true) a také ji vypiš. -
Vytvoř krátké shrnutí do stránky: kolik různých metod jsi použil a v čem se liší.
Doplňující pokyny:
-
Používej
constpro deklaraci objektů. -
Konstruktorovou funkci piš klasicky pomocí
function. -
Nezapomeň, že u konstruktorové funkce musíš použít
new. -
Vypisy odděl pomocí
<br>.
Řešení úlohy
Co je zde splněno
-
Vytvoření
uzivatel1pomocínew Object(). -
Vytvoření
uzivatel2pomocí konstruktorové funkce anew. -
Přidání nové vlastnosti
aktivnikuzivatel2. -
Vytvoření
uzivatel3pomocíObject.create()a doplnění vlastností. -
Přehledný výpis všech uživatelů.
-
Shrnutí rozdílů mezi jednotlivými metodami.