JavascriptProva

sabato 9 gennaio 2016

Ereditarietà prototipale in JavaScript.

Uso Javascript in modo un po' "strano": non ho mai affrontato seriamente la questione dell'ereditarietà.

Vediamo di capirci qualcosa...

Creo una funzione, come costruttore dal quale istanziare oggetti.
function Prima(){
 this.uno=10;
 this.due=20; 
}
Ora creo un'altra funzione:
function Prima(){
 this.uno=10;
 this.due=20; 
}

function Seconda(){}
Istanzio...
function Prima(){
 this.uno=10;
 this.due=20; 
}

function Seconda(){}

var prima=new Prima();
var seconda=new Seconda();
e do il comando di mettere a video il valore delle proprietà uno e due del primo oggetto, istanziato dalla classe Prima, e del secondo oggetto, istanziato dalla classe Seconda.
function Prima(){
 this.uno=10;
 this.due=20; 
}

function Seconda(){}

var prima=new Prima();
var seconda=new Seconda();

document.write("prima.uno "+prima.uno);
document.write("prima.due "+prima.due);
document.write("seconda.uno "+seconda.uno);
document.write("seconda.due "+seconda.due);
e ottengo:
prima.uno 10
prima.due 20
seconda.uno undefined
seconda.due undefined


Ora istituisco la classe Seconda come erede della classe Prima, usando la funzione prototype:
function Prima(){
 this.uno=10;
 this.due=20; 
}

function Seconda(){}

Seconda.prototype=new Prima();

var prima=new Prima();
var seconda=new Seconda();


document.write("prima.uno "+prima.uno+"
"); document.write("prima.due "+prima.due+"
"); document.write("seconda.uno "+seconda.uno+"
"); document.write("seconda.due "+seconda.due+"
");
...ed ecco il risultato:
prima.uno 10
prima.due 20
seconda.uno 10
seconda.due 20
La riga marcata in rosso, che usa il prototype, è dunque il modo di rendere una classe erede di un'altra: essa presenta le stesse proprietà di un'altra classe, che quindi diventa genitrice come nei classici linguaggi orientati agli oggetti.

Nessun commento:

Posta un commento