Categorie
Appunti Javascript Programmazione

{JS} Estendere costruttori & Classi

Estendere un costruttore

Potremmo trovarci nella condizione di dover estendere/creare un costruttore partendo da un costruttore già esistente.

Costruttore principale
function Persona(nome, cognome){
this.nome=nome;
this.cognome=cognome;
}
Costruttore aggiunto
function Programmatore(nome,cognome,linguaggio){
Persona.call(this,nome,cognome);
this.linguaggio=linguaggio;
}

Abbiamo creato il costruttore “Programmatore” richiamando il costruttore “Persona” e le sue proprietà all’interno di esso; per farlo abbiamo utilizzato il metodo .call() dell’oggetto “function” e questo è stato possibile perche un costruttore ricordiamo essere in se una semplice funzione.

Il metodo .call() come abbimo già visto può prevedere più paramentri; il primo dei quali è l’impostazione del thisArg;
In questo esempio this fa riferimento a “Programmatore” a cui si richiede con i due successivi argomenti di associare le proprietà “nome” e “cognome” di persona.

programmatore.prototype = Object.create(persona.prototype);

Con quest’ultima riga di codice indichiamo all’engine Javascript che il prototipo degli oggetti creati mediante il costruttore “Programmatore” hanno come prototipo il costruttore e gli oggetti “Persona”.

var giuseppeVerdi = new Programmatore("Giuseppe", "Verdi", "Javascript");

Estendere una Classe

Come già visto, una classe non è altro che un costruttore di oggetti con una sintassi differente.

Classe principale
class Persona{
constructor(nome, cognome){
this.nome=nome;
this.cognome=cognome;
}}
Sottoclasse alias Classe estesa
class Programmatore extends Persona {
 constructor(nome, cognome){
 super(nome, cognome);
 this.linguaggiConosciuti = [];
 }
}

La parola chiave extends consente di dichiarare che la nuova classe programmatore deriva dalla classe persona. All’interno del costruttore della classe programmatore richiamiamo il costruttore della classe persona tramite l’invocazione di super(). In generale possiamo fare riferimento alla superclasse o classe base proprio tramite la parola chiave super.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *