en JavaScript class er en plan for oprettelse af objekter. En klasse indkapsler data og funktioner, der manipulerer dataene.i modsætning til andre programmeringssprog som Java og C++ er JavaScript-klasser syntaktisk sukker over den prototype arv. Med andre ord er ES6-klasser bare specielle funktioner.
klasser før ES6 revisited
før ES6 havde JavaScript ingen begreber af klasser., For at efterligne en klasse brugte vi ofte en konstruktørfunktion som vist i følgende eksempel:
Output:
hvordan det fungerer.
Opret førstPerson som en konstruktørfunktion, der har et egenskabsnavn kaldetname. Funktionen getName() er tildelt prototype, så den kan deles af alle forekomster af Person type.
opret Derefter en ny kopi af Person type ved hjælp af new operatør., Objektet john er derfor en forekomst af Person og Object gennem prototypisk arv.,
De følgende udsagn for brug instanceof operatøren til at kontrollere, hvis john er et eksempel på det Person og Object type:
Code language: JavaScript (javascript)
ES6 klasse erklæring
ES6 indført en ny syntaks for om en klasse, som vist i dette eksempel:
Code language: JavaScript (javascript)
Denne Person class opfører sig som Person skriv i det foregående eksempel. I stedet for at bruge en konstruktørfunktion bruger den class nøgleord.,
i Personklassen er constructor() hvor du kan initialisere egenskaberne for en instans. JavaScript kalder automatisk constructor() – metoden, når du instantierer et objekt i klassen.
følgende opretter en ny Person objekt, som automatisk vil kalde constructor() af Person class:
Code language: JavaScript (javascript)
getName() kaldes en metode i Person class., Som en constructor-funktion, du kan kalde metoder i en klasse med følgende syntax:
Code language: CSS (css)
For eksempel:
Code language: JavaScript (javascript)
for At bekræfte det faktum, at klasser er særlige funktioner, du kan bruge typeof operatør for at kontrollere den type af Person class.
Code language: JavaScript (javascript)
Det returnerer function som forventet.,
john objektet er også et eksempel på Person og Object type:
Code language: JavaScript (javascript)
Class vs. Specialtype
på Trods af lighederne mellem en klasse og en brugerdefineret type, der er defineret via en constructor-funktion, der er nogle vigtige forskelle.
for det første hejses klassedeklarationer ikke som funktionsdeklarationer.hvis du f.eks. placerer følgende kode over afsnittet Person klassedeklaration, får du et ReferenceError.,
Code language: JavaScript (javascript)
fejl:
Code language: JavaScript (javascript)
for det andet udfører hele koden i en klasse automatisk i streng tilstand. Og du kan ikke ændre denne adfærd.
tredje, klasse metoder er ikke-enumerable. Hvis du bruger en konstruktørfunktion, skal du bruge Object.defineProperty() – metoden til at gøre en egenskab ikke-enumerabel.
for det fjerde vil opkald til klassekonstruktøren uden new operatøren resultere i en fejl som vist i følgende eksempel.,
Code language: JavaScript (javascript)
Fejl:
Code language: JavaScript (javascript)
Oversigt
- Brug JavaScript
classsøgeord erklærer en ny klasse. - A
classerklæring er syntaktisk sukker over prototypisk arv med yderligere forbedringer.
- var denne vejledning hjælpsom ?
- YesNo
Leave a Reply