JavaScript
HTML
CSS
PHP
Coming Soon
Generatori
Varie & Old

Ereditarietà prototipale

Ereditarietà prototipale

In JavaScript non esistono classi vere e proprie come in altri linguaggi tradizionali: tutto si basa sugli oggetti. L’ereditarietà prototipale permette a un oggetto di accedere a proprietà e metodi definiti in un altro oggetto, tramite la catena dei prototipi.

Cos’è il prototipo

Ogni oggetto in JavaScript possiede un collegamento nascosto chiamato __proto__ che punta al suo prototipo. Se cerchiamo una proprietà o un metodo in un oggetto e non lo troviamo, JavaScript prosegue la ricerca nel prototipo, continuando fino a risalire la catena.

  • Un prototipo è un oggetto che fornisce proprietà e metodi ad altri oggetti.
  • La catena dei prototipi si ferma quando non ci sono più riferimenti (null).
  • Le classi moderne in realtà usano questo meccanismo dietro le quinte.

Esempio base con prototipo

In questo esempio aggiungiamo un metodo al prototipo di un costruttore. Tutti gli oggetti creati con quel costruttore potranno usare il metodo:

Codice Esempio: Funzione costruttore e prototipo

CODE: Javascriptpreleva codice
  1. function Persona(nome) {
  2.   this.nome = nome;
  3. }
  4.  
  5. Persona.prototype.saluta = function() {
  6.   return "Ciao, sono " + this.nome;
  7. };
  8.  
  9. let p1 = new Persona("Anna");
  10. console.log(p1.saluta());
  11. // Output: Ciao, sono Anna

Ereditarietà tra funzioni costruttore

Possiamo creare una funzione costruttore che eredita le proprietà e i metodi di un’altra usando call() e collegando i prototipi:

Codice Esempio: Ereditarietà con prototipo

CODE: Javascriptpreleva codice
  1. function Animale(nome) {
  2.   this.nome = nome;
  3. }
  4.  
  5. Animale.prototype.muovi = function() {
  6.   return this.nome + " si sta muovendo";
  7. };
  8.  
  9. function Cane(nome, razza) {
  10.   Animale.call(this, nome); 
  11.   this.razza = razza;
  12. }
  13.  
  14. Cane.prototype = Object.create(Animale.prototype);
  15. Cane.prototype.constructor = Cane;
  16.  
  17. Cane.prototype.abbaia = function() {
  18.   return this.nome + " sta abbaiando!";
  19. };
  20.  
  21. let c1 = new Cane("Fido", "Labrador");
  22. console.log(c1.muovi()); 
  23. // Output: Fido si sta muovendo
  24. console.log(c1.abbaia()); 
  25. // Output: Fido sta abbaiando!

Tabella riassuntiva

Concetto Descrizione Esempio
Prototipo Oggetto da cui un altro oggetto eredita proprietà e metodi. Oggetto.__proto__
Funzione costruttore Funzione usata per creare oggetti con proprietà iniziali. function Persona(nome) {...}
Object.create() Crea un nuovo oggetto collegato a un prototipo specifico. Object.create(Animale.prototype)

Considerazioni

L’ereditarietà prototipale è alla base di JavaScript. Le classi introdotte con ES6 sono solo una sintassi più leggibile, ma dietro usano sempre i prototipi. Comprendere questo meccanismo è fondamentale per capire come funziona la condivisione di metodi e proprietà tra oggetti.


I Cookie su questo sito:

Il nostro sito utilizza cookie e altre tecnologie in modo tale che sia noi, sia i nostri partner, possiamo ricordarci di te e capire come tu e gli altri visitatori utilizzate il nostro sito. Qui puoi trovare ulteriori informazioni sui cookie e le altre tecnologie. Chiudendo questo banner o continuando la navigazione acconsenti all'uso dei cookie. Acconsento Info Cookies