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... 
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.
Ti faccio qualche esempio:
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"
Se hai tempo dai una sbirciata qua:
http://sviluppare-in-rete.blogspot.c...totype-ed.html