giovedì 1 maggio 2014

Proprietà aggiunte nel prototipo e proprietà inizializzate nel costruttore: differenza.

Ecco, forse sto arrivando a capo del segreto...

Adesso inizializzo una proprietà nel costruttore e poi la modifico nel prototipo
function Oggetto(){
 this.prop="Prima proprieta";
}

var Istanza=new Oggetto();

alert(Istanza.prop);

Oggetto.prototype.prop="Prima proprieta modificata";

alert(Istanza.prop);
Ottengo: Prima proprieta e Prima proprieta.

La proprietà inizializzata nel costruttore non può più essere modificata nel prototipo.
Ora invece di inizializzarla nel costruttore la inizializzo nel prototipo:
function Oggetto(){

}

var Istanza=new Oggetto();

Oggetto.prototype.prop="Prima proprieta";

alert(Istanza.prop);

Oggetto.prototype.prop="Prima proprieta modificata";

alert(Istanza.prop);
E ottengo Prima proprieta e Prima proprieta modificata.
Dunque, la proprietà che non è stata inizializzata nel costruttore può essere modificata nel prototipo.
Per questo, se ho aggiunto una proprietà nel prototipo, posso poi modificarla.
function Oggetto(){
 this.prop="Prima proprieta";
}

var Istanza=new Oggetto();



alert(Istanza.prop2);

Oggetto.prototype.prop2="Seconda proprieta";

alert(Istanza.prop2);

Oggetto.prototype.prop2="Seconda proprieta modificata";

alert(Istanza.prop2);
ottenendo rispettivamente: Nulla, Seconda proprieta e Seconda proprieta modificata.

Nessun commento:

Posta un commento