Mi spiace, ma così non posso darti suggerimenti. L'unica cosa che mi preme farti notare è la differenza tra valore primario e object reference. In javascript sono valori primari solo tre cose:[list=1][*]booleani[*]numeri[*]stringhe[/list=1]
Punto e basta. Tutto il resto (date, array, funzioni, etc etc) sono object reference. Ovvero, in parole povere, non sono altro che dei link a un qualcosa che è inaccessibile alla programmazione. Se io scrivo:
L'interprete chiama il costruttore di date, crea una data e se la tiene per sé, totalmente inaccessibile nel suo "valore primario", ma crea un link a tale oggetto interno e lo mette nella variabile "ciao". Se poi io scrivo:codice:var ciao = new Date();
L'interprete prende il "link" contenuto in ciao (ma si chiama "reference") alla posizione della memoria in cui è stata creata la data e lo ricopia paro paro in mondo. Adesso ciao e mondo contengono entrambe due "link" allo stesso oggetto. Te ne rendi conto perché se ad esempio lo modifichi accedendoci tramite ciao scopri che anche la variabile mondo è cambiata. Da questo puoi intuire che in javascript non c'è modo di ricopiare gli oggetti (deep copy) senza passare per dei cicli che li leggano per intero. Ma del resto è per questo che esistono i prototipi e i costruttori che tagliano la testa al torocodice:var mondo = ciao;![]()
![]()