Javascript orientato agli oggetti scritto da algweb
In javascript si può creare un oggetto semplicemente nel seguente modo:
1 persona=new object(); 2 persona.nome="bart"; 3 persona.cognome="simpson"
Questa seria di istruzioni ci permette di disporre di un oggetto che ha due proprietà nome e cognome. E’ ovvio quale sia l’output della seguente istruzione:
1 document.write("Nome: "+persona.nome+" Cognome:"+persona.cognome);
Poichè è piuttosto banale la considerazione che ogni oggetti persona ha le proprietà nome e cognome ci si aspetta che javascript metta a disposizione uno shortcut per allegerire il codice per la creazione di una famiglia di oggetti persona. Stiamo parlando di come javascript intende il concetto di costruttore. In javascript, un costruttore è una semplice funzione richiamata mediante l’operatore new.
1 function Persona(nome, cognome) { 2 this.nome = nome; 3 this.cognome = cognome; 4 }
Utilizzando il costruttore in questo modo:
1 var homer = new Persona("homer","simpson"); 2 var bart = new Persona("bart","simpson");
A questo punto si è in grado di creare e utilizzare oggetti con un numero arbitrario di proprietà. Però un oggetto non è solo incapsulamento di dati ma anche comportamento. Vale a dire, dobbiamo avere la possbilità di poter scrivere dei metodi d’istanza, delle funzioni per i nostri oggetti. In javascript, è possibile risolvere questo problema in questo modo:
1 2 function say_hello_to(name) { 3 return "Hi, "+name; 4 } 5 6 function Persona(nome, cognome) { 7 this.nome = nome; 8 this.cognome = cognome; 9 this.sayHello=say_hello; 10 }
Ovviamente è possibile utilizzare la funzione in questo modo:
1 var homer = new Persona("homer","simpson"); 2 document.write(home.sayHello("marge"));
Essendo javascript un linguaggio dinamico permette di estendere le instanze di una specifica classe a runtime mediante l’uso della parola chiave prototype. Infatti, supponendo di voler aggiungere costante age alla classe persona si può procedere in questo modo:
1 Persona.age=null; 2 var bart = new Persona("bart","simpson"); 3 //a questo punto possiamo usare la prorietà definita con prototype 4 bart.age=8; 5 document.write(bart.sayHello("algweb")); 6 document.write("Mi chiamo "+bart.name+" e ho "+bart.age+" anni");
Ovviamente, tutti gli esempi che abbiamo fanno non illustrano a pieno le possibilità di questo linguaggio rspetto alla programmazione a oggetti. Però, si spera rappresenti un buon punto di partenza per farsi un’idea di come programmare a oggetti con javascript.
