[JavaScript] Un costruttore facilita la vita

Capita spesso di usare JavaScript per eseguire funzioni routinarie e contemporanee nella stessa pagina. A volte tali operazioni sono rese difficili da fatto che le funzioni, scritte nel loro modo regolare, possono essere istanziate una sola volta.

Per evitare questo limite naturale – che non è del linguaggio di programmazione, ma della tipologia di scrittura adottata dal programmatore – si rende spesso necessario costruire un oggetto tramite il quale istanziare una sessione che potrà chiamare simultaneamente la stessa funzione senza intercorrere in conflitti con variabili esistenti.

Di fatto andremo a definire le funzioni che utilizzeremo per arrivare al nostro risultato all’interno di un oggetto, che poi verrà evocato con una propria istanza. Di un oggetto possiamo creare più istanze, ed ogni istanza può richiamare autonomamente ogni metodo dell’oggetto.

Facciamo un esempio pratico. Un semplice innerHTML.

function showText(‘text’, ‘id’){
  this.text = text;
  this.id   = id;
 
  this.g = function(){
    return document.getElementById(this.id);
  }
 
  this.show = function(){
    this.g.innerHTML = this.text;
  }
}

first = new showText(‘Hello World!’,’myId’);
first.show();

second = new showText(‘Hello Web!’,’myOtherId’);
second.show();

Sembra poco, ma può risultare molto potente 😉

3 thoughts on “[JavaScript] Un costruttore facilita la vita”

  1. Ciao Davide…Sono alle prime armi con js è ho il problema di cui parli in questo post.
    In particolare ho una funzione che esegue il fade tra due colori su un testo. Ha tre parametri in ingresso, un ID, e i due colori in formato esadecimale (es: 333333).

    Dopo aver inizializzato tutte le variabili, attraverso setTimeout chiamo la funzione che esegue la transizione di colore vera e propria.
    Potresti aiutarmi a capire come adattare queste due funzioni alla struttura del tuo esempio, di modo che posso richiamare il fade per varie righe di testo senza che mi si incasini?

    Grazie

  2. Ciao..sono alle prime armi con js e ho il problema di cui parli sopra. In particolare ho due funzioni di cui una inizializza alcune variabili e chiama, con un setTimeout una seconda funzione, che cicla ricorsivamente sempre attraverso setTimeout finchè non ha raggiunto il suo obiettivo…In poche parole come faccio ad adattare la tua soluzione anche in questo caso più complesso???

    Grazie

Comments are closed.