programmazione ad oggetti Javascript programmazione ad oggetti
Javascript linguaggio INTERPRETATO Orientato agli oggetti DHTML fruibile tramite browser Tecnologia Ajax Flash (actionscript 2.0) Window Scripting Host (WSH) Pagine dinamiche lato server (.ASP) Pdf dinamici
Oggetti in javascript Javascript non ha classi ma si può creare un oggetto tramite una funzione costruttore All'interno di questa funzione si utilizza this per indicare l'oggetto Le variabili e le funzioni definite con il prefisso this. saranno variabili e metodi di istanza Le variabili e le funzioni definite con nomeDellaClasse.prototype come prefisso saranno variabili e metodi di classe (es: toString, ecc.) (in pratica sono accessibili per qualsiasi istanza, ma non vengono visualizzati con for .. in)
Funzioni costruttore Ogni funzione può diventare un costruttore L'operatore unario new fa diventare una funzione un costruttore L'operatore new ritorna il nuovo oggetto appena creato function Led() { var stato = "OFF" //on - off: variabile protetta (var) this.accendi = function () { stato = "ON" } this.spegni = function () { stato = "OFF" } this.mostra = function () { return stato } } a = new Led(); b= new Led()
Ereditarietà in javascript eredità prototipale...si passa dal prototipo function ClassePadre(...) {....} //definita la classe padre ClasseFiglia.prototype = new ClassePadre() ClasseFiglia.prototype.constructor =ClasseFiglia function ClasseFiglia(...) { //se si vuole richiamare la classePadre classePadre.call(this, eventuali parametri) }
Le variabili nelle funzioni costruttore function Led() { var stato = "OFF" //on - off this.accendi = function () stato = "ON" } this.spegni = function () stato = "OFF" this.mostra = function () return stato a = new Led() //qui stato è una variabile di istanza protetta a.stato //undefined function Led() { this.stato = "OFF" //on - off this.accendi = function () this.stato = "ON" } this.spegni = function () this.stato = "OFF" this.mostra = function () return this.stato //qui stato è una proprietà pubblica (lettura e scrittura, SCONSIGLIATO!!)
un po di colore... Creiamo la classe LedColorato che eredita dalla classe Led LedColorato.prototype = new Led //attenzione senza parentesi LedColorato.prototype.constructor = LedColorato function LedColorato( coloreIniziale ) { var colore = coloreIniziale this.cheColore= function() {return colore} }