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