Una classe JavaScript è un progetto per la creazione di oggetti. Una classe incapsula i dati e le funzioni che manipolano i dati.
A differenza di altri linguaggi di programmazione come Java e C++, le classi JavaScript sono zucchero sintattico sull’eredità prototipale. In altre parole, le classi ES6 sono solo funzioni speciali.
Classi prima di ES6 revisited
Prima di ES6, JavaScript non aveva concetti di classi., Per imitare una classe, abbiamo spesso usato una funzione di costruzione come mostrato nel seguente esempio:
Output:
Come funziona.
Innanzitutto, crearePerson
come funzione di costruttore che ha un nome di proprietà chiamatoname
. La funzionegetName()
viene assegnata alprototype
in modo che possa essere condivisa da tutte le istanze del tipoPerson
.
Quindi, creare una nuova istanza del tipoPerson
utilizzando l’operatorenew
., L’oggettojohn
, quindi, è un’istanza diPerson
eObject
attraverso l’ereditarietà prototipale.,
Le seguenti dichiarazioni utilizzare il instanceof
operatore per verificare se john
è un esempio di Person
e Object
tipo:
Code language: JavaScript (javascript)
ES6 dichiarazione di classe
ES6 ha introdotto una nuova sintassi per la dichiarazione di una classe, come mostrato in questo esempio:
Code language: JavaScript (javascript)
Questo Person
classe si comporta come il Person
tipo nell’esempio precedente. Tuttavia, invece di utilizzare una funzione di costruttore, utilizza la parola chiave class
.,
Nella classe Person
, constructor()
è dove è possibile inizializzare le proprietà di un’istanza. JavaScript chiama automaticamente il metodoconstructor()
quando si crea un’istanza di un oggetto della classe.
Il seguente crea un nuovo Person
oggetto, che si chiamerà automaticamente il constructor()
di Person
classe:
Code language: JavaScript (javascript)
getName()
viene chiamato un metodo di Person
classe., Come una funzione di costruzione, è possibile chiamare i metodi della classe utilizza la seguente sintassi:
Code language: CSS (css)
Per esempio:
Code language: JavaScript (javascript)
Per verificare il fatto che le classi sono funzioni speciali, è possibile utilizzare i tag typeof
operatore di controllare il tipo di Person
classe.
Code language: JavaScript (javascript)
Restituisce function
come previsto.,
john
oggetto è un’istanza di Person
e Object
tipologia:
Code language: JavaScript (javascript)
Classe vs Personalizzata tipo
Nonostante le somiglianze tra una classe e un tipo personalizzato definito tramite una funzione di costruzione, ci sono alcune differenze importanti.
Innanzitutto, le dichiarazioni di classe non vengono issate come le dichiarazioni di funzione.
Ad esempio, se si inserisce il seguente codice sopra la sezionePerson
dichiarazione di classe, si otterrà unReferenceError
.,
Code language: JavaScript (javascript)
Errore:
Code language: JavaScript (javascript)
In secondo luogo, tutto il codice all’interno di una classe viene eseguito automaticamente in modalità rigorosa. E non puoi cambiare questo comportamento.
In terzo luogo, i metodi di classe non sono enumerabili. Se si utilizza una funzione di costruttore, è necessario utilizzare il metodoObject.defineProperty()
per rendere una proprietà non enumerabile.
In quarto luogo, chiamando il costruttore di classe senza l’operatorenew
si verificherà un errore come mostrato nell’esempio seguente.,
Code language: JavaScript (javascript)
Errore:
Code language: JavaScript (javascript)
Sommario
- Utilizzare JavaScript
class
parola chiave dichiara una nuova classe. - A
class
la dichiarazione è zucchero sintattico sull’ereditarietà prototipale con ulteriori miglioramenti.
- Questo tutorial è stato utile ?
- Sì
Leave a Reply