— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Copia superficiale
Copia superficiale è una copia bit-saggio di un oggetto. Viene creato un nuovo oggetto con una copia esatta dei valori nell’oggetto originale. Se uno qualsiasi dei campi dell’oggetto sono riferimenti ad altri oggetti, vengono copiati solo gli indirizzi di riferimento, ovvero viene copiato solo l’indirizzo di memoria.
Deep copy
Una copia profonda copia tutti i campi e crea copie della memoria allocata dinamicamente a cui puntano i campi., Una copia profonda si verifica quando un oggetto viene copiato insieme agli oggetti a cui si riferisce.
Copia superficiale: fa una copia del riferimento a X in Y. Pensaci come una copia dell’indirizzo di X. Quindi, gli indirizzi di X e Y saranno gli stessi, cioè punteranno alla stessa posizione di memoria.
Deep copy: crea una copia di tutti i membri di X, alloca una diversa posizione di memoria per Y e quindi assegna i membri copiati a Y per ottenere una copia profonda. In questo modo, se X scompare Y è ancora valido nella memoria.,
Il termine corretto da usare sarebbe la clonazione, dove sai che entrambi sono totalmente uguali, ma diversi (cioè memorizzati come due posizioni diverse nello spazio di memoria).
Considera questo esempio:
var employeeDetailsOriginal = { name: 'Manjula', age: 25, Profession: 'Software Engineer' };
Diciamo che vuoi creare un duplicato di questo, in modo che anche se cambi i valori originali, puoi sempre tornare all’originale.,
Posso farlo:
var employeeDetailsDuplicate = employeeDetailsOriginal; //Shallow copy!
Se cambiamo un valore:
employeeDetailsDuplicate.name = 'NameChanged';
Questa istruzione cambierà anche il nome da employeeDetailsOriginal, poiché abbiamo una copia superficiale, o un riferimento a var employeeDetailsOriginal. Ciò significa che stai perdendo anche i dati originali.
Ma, creando una nuova variabile utilizzando le proprietà della variabile employeeDetailsOriginal originale, è possibile creare una copia profonda.
Ora se cambi employeeDetailsDuplicate.,nome, esso interesserà solo employeeDetailsDuplicate e non employeeDetailsOriginal
Diagramatic esempio
Così Come copia oggetto JavaScript nuova variabile NON da riferimento?
La tua unica opzione è clonare in qualche modo l’oggetto.
Metodo javascript puro per l’oggetto clone profondo
Leave a Reply