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 prototypetak, ż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 Personconstructor() 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 JavaScriptclasssłowo kluczowe deklaruje nową klasę.
- aclassdeklaracja jest składniowym cukrem nad dziedziczeniem prototypowym z dodatkowymi ulepszeniami.
- czy ten tutorial był pomocny ?
- YesNo
Leave a Reply