Skip to content

Latest commit

 

History

History
67 lines (46 loc) · 2.84 KB

JAVASCRIPT-PROTOTYPE.md

File metadata and controls

67 lines (46 loc) · 2.84 KB

Il prototype in Javascript

L'uso del prototipo in JavaScript è fondamentale per aggiungere proprietà e metodi a costruttori di oggetti, permettendo così a tutti gli oggetti creati da un determinato costruttore di condividere quelle proprietà e quei metodi. Ecco come puoi utilizzare il prototipo:

Definizione di un Costruttore

Prima di tutto, definisci una funzione costruttore. Gli oggetti vengono creati utilizzando questa funzione costruttore con la parola chiave new.

function Persona(nome) {
  this.nome = nome;
}

Aggiunta di Metodi al Prototipo

Invece di aggiungere metodi direttamente all'interno del costruttore (cosa che li replicherebbe in ogni istanza, occupando più memoria), puoi aggiungerli al prototipo del costruttore. In questo modo, tutti gli oggetti creati tramite il costruttore Persona condivideranno lo stesso metodo, conservando memoria.

Persona.prototype.saluta = function() {
  console.log(`Ciao, il mio nome è ${this.nome}!`);
};

Creazione di Oggetti

Ora, ogni volta che crei un nuovo oggetto usando new Persona(), quell'oggetto avrà accesso al metodo saluta tramite la catena dei prototipi.

let persona1 = new Persona("Mario");
persona1.saluta();  // Output: "Ciao, il mio nome è Mario!"

let persona2 = new Persona("Luca");
persona2.saluta();  // Output: "Ciao, il mio nome è Luca!"

Ereditarietà Prototipale

Puoi utilizzare il prototipo per realizzare anche l'ereditarietà tra funzioni costruttore.

function Impiegato(nome, ruolo) {
  Persona.call(this, nome);  // Chiama il costruttore di Persona
  this.ruolo = ruolo;
}

// Imposta Impiegato.prototype per ereditare da Persona.prototype
Impiegato.prototype = Object.create(Persona.prototype);

// Re-imposta il costruttore di Impiegato sul suo costruttore originale
Impiegato.prototype.constructor = Impiegato;

// Aggiungi un nuovo metodo a Impiegato
Impiegato.prototype.mostraRuolo = function() {
  console.log(`Il mio ruolo è ${this.ruolo}.`);
};

let impiegato1 = new Impiegato("Sara", "Ingegnere");
impiegato1.saluta();      // Output: "Ciao, il mio nome è Sara!"
impiegato1.mostraRuolo(); // Output: "Il mio ruolo è Ingegnere."

In questo esempio, Impiegato eredita da Persona tramite la catena dei prototipi. Usando Object.create(Persona.prototype), assicuri che Impiegato.prototype abbia lo stesso prototipo di Persona, consentendo così agli oggetti Impiegato di accedere ai metodi definiti in Persona.prototype, oltre a quelli specifici di Impiegato.

Considerazioni

L'uso del prototipo è molto potente ma può diventare complicato, soprattutto con l'ereditarietà prototipale. La sintassi delle classi introdotta in ES6 semplifica l'ereditarietà e la definizione di metodi, ma sotto il cofano, JavaScript usa ancora il prototipo per implementare queste caratteristiche.