Aspetta, nella fretta ti avevo detto qualche fregnaccia prima. L'assegnazione del prototipo la devi fare fuori dal costruttore, se la fai dentro non ti funzionerà... sorry, capita a tutti di sbagliare...
Ti faccio qualche esempio:Originariamente inviato da giuseppe500
scusami ma cercando in google ho trovato un esempio che pensavo fosse corretto.
ti volevo chiedere 2 cose:
1)la visibilità delle variabili : se utilizzo una variabile this.Program nel costruttore base e richiamo il costruttore come accedo correttamente a quella variabile da un prototipo derivato?
2)come richiamare una funzione di un prototipo base da cui eredito?
grazie.
Se hai tempo dai una sbirciata qua:codice:// questa e' la classe base function Veicolo (sTipo) { this.tipo = sTipo; } // questa e' una classe derivata function Automobile (sModello, sVelocMax) { this.modello = sModello; this.velocita = sVelocMax; } Automobile.prototype = new Veicolo("Automobile"); Automobile.prototype.constructor = Automobile; // questa e' una classe derivata function Aereo (sModello, sVelocMax, sAltitudine) { this.modello = sModello; this.velocita = sVelocMax; this.altitudine = sAltitudine; } Aereo.prototype = new Veicolo("Aereo"); Aereo.prototype.constructor = Aereo; // adesso proviamo... var miaAuto = new Automobile("FIAT 500", "80 km/h"); alert(miaAuto.tipo); // velocita' fa parte del costruttore base alert(miaAuto.velocita); // velocita' fa parte del costruttore figlio // si accede allo stesso modo!! // adesso invece guarda qua cosa faccio... // questa e' una classe derivata function Motociclo (sModello, sVelocMax) { this.modello = sModello; this.velocita = sVelocMax; } // questa e' una classe derivata function Ciclomotore (sModello, sVelocMax) { this.modello = sModello; this.velocita = sVelocMax; } // adesso assegno sia a Motociclo che a Ciclomotore lo stesso prototipo var oDueRuotePr = new Veicolo("Due ruote"); Motociclo.prototype = oDueRuotePr; Ciclomotore.prototype = oDueRuotePr; Motociclo.prototype.constructor = Motociclo; Ciclomotore.prototype.constructor = Ciclomotore; // e guarda cosa succede... Ciclomotore.prototype.tipo = "Motocicletta"; alert(Motociclo.prototype.tipo); // "Motocicletta" // se invece faccio così sto assegnando, a dispetto delle apparenze, due prototipi diversi; spero tu abbia capito il perché... Motociclo.prototype = new Veicolo("Due ruote"); Ciclomotore.prototype = new Veicolo("Due ruote"); // e guarda cosa succede... Ciclomotore.prototype.tipo = "Motocicletta"; alert(Motociclo.prototype.tipo); // rimane sempre "Due ruote"
http://sviluppare-in-rete.blogspot.c...totype-ed.html
![]()


Rispondi quotando