třída JavaScript je plán pro vytváření objektů. Třída zapouzdřuje data a funkce, které manipulují s daty.
Na rozdíl od jiných programovacích jazyků, jako jsou Java A C++, jsou třídy JavaScript syntaktickým cukrem nad prototypovou dědičností. Jinými slovy, třídy ES6 jsou jen speciální funkce.
třídy před ES6 revisited
před ES6, JavaScript neměl žádné pojmy tříd., Napodobovat třídy, jsme se často používá funkce konstruktoru, jak je znázorněno v následujícím příkladu:
Výstup:
Jak to funguje.
nejprve vytvořtePerson
jako funkci konstruktoru, která má název vlastnosti s názvem name
. Funkce getName()
je přiřazena funkci prototype
, aby mohla být sdílena všemi instancemi typu Person
.
poté vytvořte novou instanci Person
pomocínew
operátor., john
objekt, proto je instance Person
Object
prostřednictvím prototypal dědictví.,
následující prohlášení pomocí instanceof
provozovatel zkontrolovat, zda john
příklad Person
Object
typ:
Code language: JavaScript (javascript)
ES6 deklarace třídy
ES6 zavedena nová syntaxe pro deklarování třídy, jak je znázorněno v tomto příkladu:
Code language: JavaScript (javascript)
Person
třída se chová jako Person
type v předchozím příkladu. Namísto použití funkce konstruktoru však používá klíčové slovoclass
.,
ve třídě Person
je constructor()
místo, kde můžete inicializovat vlastnosti instance. JavaScript automaticky volá metodu constructor()
, když instalujete objekt třídy.
následující vytváří nový Person
objekt, který bude automaticky volat constructor()
Person
třídy:
Code language: JavaScript (javascript)
getName()
se nazývá metoda Person
třídy., Jako funkce konstruktoru, můžete volat metody třídy pomocí následující syntaxe:
Code language: CSS (css)
například:
Code language: JavaScript (javascript)
ověřit skutečnost, že třídy jsou speciální funkce, můžete použít typeof
provozovatel zkontrolovat typ Person
třídy.
Code language: JavaScript (javascript)
vrací function
podle očekávání.,
john
objektu je také instance Person
Object
typy:
Code language: JavaScript (javascript)
Class vs. Vlastní typ
Navzdory podobnosti mezi třídy a vlastní typ definované pomocí funkce konstruktoru, tam jsou některé důležité rozdíly.
první deklarace třídy nejsou zvednuty jako deklarace funkcí.
například, pokud umístíte následující kód nad Person
deklarace třídy bod, dostanete ReferenceError
.,
Code language: JavaScript (javascript)
Chyba:
Code language: JavaScript (javascript)
za Druhé, veškerý kód uvnitř třídy automaticky provádí v přísném režimu. A toto chování nemůžete změnit.
třetí metody třídy nejsou vyčíslitelné. Pokud používáte funkci konstruktoru, musíte použít metodu Object.defineProperty()
, aby vlastnost nebyla vyčíslitelná.
čtvrtý, volání konstruktoru třídy beznew
operátor bude mít za následek chybu, jak je uvedeno v následujícím příkladu.,
Code language: JavaScript (javascript)
Chyba:
Code language: JavaScript (javascript)
Shrnutí
- Použití Javascriptu
class
klíčové slovo prohlašuje, nové třídy. - a
class
deklarace je syntaktický cukr nad prototypovou dědičností s dalšími vylepšeními.
- byl tento návod užitečný ?
- YesNo
Leave a Reply