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 Person
klassen 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
class
søgeord erklærer en ny klasse. - A
class
erklæring er syntaktisk sukker over prototypisk arv med yderligere forbedringer.
- var denne vejledning hjælpsom ?
- YesNo
Leave a Reply