Klasa JavaScript jest schematem tworzenia obiektów. Klasa hermetyzuje Dane i funkcje, które manipulują danymi.
W przeciwieństwie do innych języków programowania, takich jak Java i C++, Klasy JavaScript są cukrem składniowym nad dziedziczeniem prototypowym. Innymi słowy, klasy ES6 są tylko funkcjami specjalnymi.
klasy przed ES6
przed ES6 JavaScript nie miał pojęcia o klasach., Aby naśladować klasę, często używaliśmy funkcji konstruktora, jak pokazano w poniższym przykładzie:
Output:
Jak to działa.
najpierw UtwórzPerson
jako funkcję konstruktora o nazwie name
. FunkcjagetName()
jest przypisana do prototype
tak, że może być współdzielona przez wszystkie instancje typuPerson
.
następnie utwórz nową instancję typuPerson
używając operatoranew
., Obiekt john
jest zatem instancją Person
I Object
poprzez dziedziczenie prototypowe.,
poniższe polecenia używają operatora instanceof
, aby sprawdzić, czy john
jest instancją Person
I Object
typ:
Code language: JavaScript (javascript)
deklaracja klasy ES6
ES6 wprowadził nową składnię deklaracji klasy, jak pokazano w tym przykładzie:
Code language: JavaScript (javascript)
ta Person
Klasa zachowuje się jak Person
div > wpisz w poprzednim przykładzie. Jednak zamiast używać funkcji konstruktora, używa słowa kluczowego class
.,
w klasie Person
constructor()
można zainicjalizować właściwości instancji. JavaScript automatycznie wywołuje metodę constructor()
podczas tworzenia instancji obiektu klasy.
poniższe tworzy nowy obiekt Person
, który automatycznie wywoła constructor()
Person
klasy:
Code language: JavaScript (javascript)
getName()
jest wywoływana metoda klasy Person
., Podobnie jak funkcja konstruktora, możesz wywołać metody klasy używając następującej składni:
Code language: CSS (css)
na przykład:
Code language: JavaScript (javascript)
aby zweryfikować fakt, że klasy są funkcjami specjalnymi, możesz użyć operatora typeof
do sprawdzenia typu Person
class.
Code language: JavaScript (javascript)
zwracafunction
zgodnie z oczekiwaniami.,
john
obiekt jest również instancją Person
I Object
typy:
Code language: JavaScript (javascript)
Klasa kontra Typ niestandardowy
pomimo podobieństw między klasą A typem niestandardowym zdefiniowanym za pomocą funkcji konstruktora, istnieją pewne istotne różnice.
Po pierwsze, deklaracje klas nie są podnoszone jak deklaracje funkcji.
na przykład, jeśli umieścisz następujący kod nad sekcjąPerson
deklaracja klasy, otrzymaszReferenceError
.,
Code language: JavaScript (javascript)
błąd:
Code language: JavaScript (javascript)
Po drugie, cały kod wewnątrz klasy jest automatycznie wykonywany w trybie ścisłym. I nie możesz zmienić tego zachowania.
Po Trzecie, metody klasowe nie są wyliczalne. Jeśli używasz funkcji konstruktora, musisz użyć metody Object.defineProperty()
, aby właściwość nie mogła być wyliczana.
Po czwarte, wywołanie konstruktora klasy bez operatora new
spowoduje błąd, jak pokazano w poniższym przykładzie.,
Code language: JavaScript (javascript)
błąd:
Code language: JavaScript (javascript)
podsumowanie
- użyj JavaScript
class
słowo kluczowe deklaruje nową klasę. - a
class
deklaracja jest składniowym cukrem nad dziedziczeniem prototypowym z dodatkowymi ulepszeniami.
- czy ten tutorial był pomocny ?
- YesNo
Leave a Reply