en JavaScript-klass är en ritning för att skapa objekt. En klass inkapslar data och funktioner som manipulerar data.
Till skillnad från andra programmeringsspråk som Java och C++ är JavaScript-klasser syntaktiskt socker över prototypen arv. Med andra ord är ES6 klasser bara speciella funktioner.
klasser före ES6 revisited
innan ES6, JavaScript hade inga begrepp av klasser., För att efterlikna en klass använde vi ofta en konstruktörsfunktion som visas i följande exempel:
utgång:
hur det fungerar.
skapa förstPerson
som konstruktionsfunktion med ett egenskapsnamn som hetername
. FunktionengetName()
tilldelasprototype
så att den kan delas av alla instanser av typenPerson
.
skapa sedan en ny instans avPerson
– typen mednew
– operatören., john
– objektet är därför en instans av Person
och Object
genom prototypiskt arv.,
följande uttalanden använderinstanceof
– operatören för att kontrollera omjohn
är en instans avPerson
ochObject
typ:
Code language: JavaScript (javascript)
ES6-klassdeklaration
Object
typ:
Code language: JavaScript (javascript)
ES6 introducerade en ny syntax för att deklarera en klass som visas i det här exemplet:
Code language: JavaScript (javascript)
den här Person
– klassen beter sig som Person
– typen i föregående exempel. Istället för att använda en konstruktörsfunktion använder den dock nyckelordet class
.,
i klassenPerson
är klassenconstructor()
där du kan initiera egenskaperna för en instans. JavaScript anropar automatiskt metodenconstructor()
när du instansierar ett objekt i klassen.
följande skapar ett nyttPerson
– objekt, som automatiskt kommer att anropaconstructor()
I klassenPerson
:
Code language: JavaScript (javascript)
getName()
kallas en metod förgetName()
. Person
– klassen., Som en konstruktörsfunktion kan du anropa metoderna för en klass med följande syntax:
Code language: CSS (css)
till exempel:
Code language: JavaScript (javascript)
för att verifiera att klasser är specialfunktioner kan du använda typeof
– operatören för att kontrollera typen av Person
Code language: JavaScript (javascript)
den returnerarfunction
som förväntat.,
john
objektet är också en instans avPerson
ochObject
typer:
Code language: JavaScript (javascript)
klass vs anpassad typ
trots likheterna mellan en klass och en anpassad typ definierad via en konstruktörsfunktion, det finns några viktiga skillnader.
För det första är klassdeklarationer inte hissade som funktionsdeklarationer.
om du till exempel placerar följande kod ovanför avsnittet Person
klassdeklaration får du ett ReferenceError
.,
Code language: JavaScript (javascript)
fel:
Code language: JavaScript (javascript)
För det andra körs all kod i en klass automatiskt i strikt läge. Och du kan inte ändra detta beteende.
För det tredje är klassmetoderna ej uppräknade. Om du använder en konstruktörsfunktion måste du använda metodenObject.defineProperty()
för att göra en egenskap oräknelig.
För det fjärde kommer anrop till klasskonstruktören utannew
– operatören att resultera i ett fel som visas i följande exempel.,
Code language: JavaScript (javascript)
fel:
Code language: JavaScript (javascript)
sammanfattning
- använd JavaScript
class
nyckelord deklarerar en ny klass. - a
class
deklaration är syntaktiskt socker över prototypisk arv med ytterligare förbättringar.
- var den här handledningen till hjälp ?
- YesNo
Leave a Reply