Questa è la continuazione di My Old QuestionPosso conservare una copia di un oggetto, all'interno di tale oggetto quando il suo creato - Continua:
Questa è la mia funzione che crea un nuovo oggetto studente:
function student(id, name, marks, mob, home){
this.id = id;
this.name = name;
this.marks = marks;
this.contacts = {};
this.contacts.mob = mob;
this.contacts.home = home;
this.toContactDetailsString = function(){
return this.name +':'+ this.mob +', '+ this.home
}
}
Vorrei creare una copia dell'oggetto quando viene inizializzato all'interno di tale oggetto: sono arrivato fino a questo:
function student(id, name, marks, mob, home){
this.id = id;
this.name = name;
this.marks = marks;
this.contacts = {};
this.contacts.mob = mob;
this.contacts.home = home;
this.toContactDetailsString = function(){
return this.name +':'+ this.mob +', '+ this.home
}
this.baseCopy = this; //Not sure about this part
}
Ma il problema è che mi dà un ciclo infinito di copie dell'oggetto corrente in baseCopy; Inoltre, si aggiorna automaticamente ogni volta che aggiorno qualsiasi attributo del mio oggetto.
1. In che modo è possibile che sia possibile conservare una copia di un oggetto con i valori iniziali all'interno di quell'oggetto al momento della sua creazione?
2. E 'possibile non copiare le funzioni
3. Sono molto curioso di sapere se questo è possibile, senza i nomi degli attributi difficili codifica e utilizzando puro JS
Non si assegna una copia dell'oggetto a "baseCopy" ma un riferimento. Nessuna copia è stata eseguita, ecco perché "baseCopy" è sempre "aggiornato". Dai un'occhiata a http://api.jquery.com/jQuery.extend/ per avere un'idea di come ottenere una copia effettiva. – Niko
'this' sembra riferirsi all'oggetto' window' in questo contesto. – Stefan
Quindi, qualcuna delle risposte pubblicate ha funzionato per te? – Cerbrus