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
classnyckelord deklarerar en ny klass. - a
classdeklaration är syntaktiskt socker över prototypisk arv med ytterligare förbättringar.
- var den här handledningen till hjälp ?
- YesNo
Leave a Reply