Skip to content

Commit a6c961a

Browse files
committed
minor fixes
1 parent 9ad65ff commit a6c961a

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

1-js/04-object-basics/02-object-copy/article.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ Ed ecco come viene effettivamente archiviata in memoria:
3535

3636
![](variable-contains-reference.svg)
3737

38-
L'oggetto è archiviato da qualche parte nella memoria (sulla destra dell'immagine), mentre la variabile `user` (sulla sinistra) contiene il "riferimento" ad esso.
38+
L'oggetto è archiviato da qualche parte nella memoria (a destra nell'immagine), mentre la variabile `user` (a sinistra) contiene il "riferimento" ad esso.
3939

4040
Potremmo immaginare la variabile oggetto `user`, come un foglio di carta con scritto l'indirizzo dell'oggetto.
4141

4242
Quando eseguiamo azioni con l'oggetto, ad es. leggere una proprietà `user.name`, il motore JavaScript guarda cosa c'è a quell'indirizzo ed esegue l'operazione sull'oggetto reale.
4343

4444
Ecco perché è così importante.
4545

46-
**Quando una variabile oggetto viene copiata, in realtà viene copiato il riferimento, ma l'oggetto in sé non viene duplicato.**
46+
**Quando una "variabile oggetto" viene copiata, in realtà viene copiato il riferimento, ma l'oggetto in sé non viene duplicato.**
4747

4848
Esempio:
4949

@@ -89,7 +89,7 @@ alert( a == b ); // true, entrambe le variabili si riferiscono allo stesso ogget
8989
alert( a === b ); // true
9090
```
9191
92-
Qui, invece, due oggetti identici (entrambi vuoti) ma indipendenti, non soddisfano l'uguaglianza:
92+
Qui, invece, due oggetti identici (entrambi vuoti), ma indipendenti, non soddisfano l'uguaglianza:
9393
9494
9595
```js run
@@ -107,7 +107,7 @@ Come abbiamo detto, copiare una variabile oggetto crea un ulteriore riferimento
107107
108108
Quindi, come possiamo fare se abbiamo bisogno di duplicare un oggetto? Creare una copia indipendente, un clone?
109109
110-
Anche questo è fattibile, ma con un po' di difficoltà visto che JavaScript non integra alcun metodo per farlo. In realtà non è un'operazione frequente, il più delle volte la copia per riferimento è adatta alla situazione.
110+
Anche questo è fattibile, ma con un po' di difficoltà visto che JavaScript non ha alcun metodo integrato per farlo. In realtà non è un'operazione frequente, il più delle volte la copia per riferimento è adatta alla situazione.
111111
112112
Ma se proprio ne abbiamo bisogno, allora dobbiamo creare un nuovo oggetto e replicare la struttura di quello esistente iterando le sue proprietà
113113
e copiandole a livello primitivo.
@@ -123,7 +123,7 @@ let user = {
123123
*!*
124124
let clone = {}; // il nuovo oggetto vuoto
125125

126-
// copiamo in clone tutte le proprietà di user
126+
// copiamo nella variabile clone tutte le proprietà di user
127127
for (let key in user) {
128128
clone[key] = user[key];
129129
}
@@ -144,8 +144,8 @@ Object.assign(dest, [src1, src2, src3...])
144144
```
145145
146146
- Il primo argomento `dest` è l'oggetto di destinazione.
147-
- Gli argomenti successivi `src1, ..., srcN` (possono essere quanti vogliamo) sono gli oggetti sorgente.
148-
- Il metodo copia tutte le proprietà degli oggetti sorgente `src1, ..., srcN` in quello di destinazione `dest`.
147+
- Gli argomenti successivi `src1, ..., srcN` (possono essere quanti vogliamo) sono gli oggetti da copiare.
148+
- Il metodo copia tutte le proprietà degli oggetti `src1, ..., srcN` in quello di destinazione `dest`.
149149
- Viene restituito l'oggetto `dest`.
150150
151151
Per fare un esempio, possiamo unire diversi oggetti in uno solo:
@@ -187,7 +187,7 @@ let clone = Object.assign({}, user);
187187
*/!*
188188
```
189189
190-
Vengono copiate tutte le proprietà di `user` nell'oggetto vuoto, quindi esso viene restituito.
190+
Vengono copiate tutte le proprietà di `user` nell'oggetto vuoto, il quale, poi, viene restituito.
191191
192192
## Clonazione nidificata
193193
@@ -229,11 +229,11 @@ user.sizes.width++; // cambiamo una proprietà da una parte
229229
alert(clone.sizes.width); // 51, e vediamo il risultato dall'altra
230230
```
231231
232-
Per correggere questo problema, dobbiamo usare un ciclo di clonazioni che esaminerà ogni valore di `user[key]` e, nel caso sia un oggetto, replichi anche la sua struttura. Questa operazione è chiamata "deep cloning" (copia profonda).
232+
Per risolvere questo problema, dobbiamo usare un ciclo di clonazioni che esaminerà ogni valore di `user[key]` e, nel caso sia un oggetto, replichi anche la sua struttura. Questa operazione è chiamata "deep cloning" (copia profonda).
233233
234234
Per implementare questa funzione possiamo usare la ricorsione. Oppure, per non reinventare la ruota, possiamo usare qualcosa di già pronto, ad esempio [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep) dalla libreria JavaScript [lodash](https://lodash.com).
235235
236-
````smart header="Gli oggetti dichiarati con Const possono essere modificati"
236+
````smart header="Gli oggetti dichiarati con const possono essere modificati"
237237
Un importante "side effect" della memorizzazione per riferimento è che un oggetto dichiarato con `const` *può* essere modificato.
238238

239239
Esempio:
@@ -252,7 +252,7 @@ alert(user.name); // Pete
252252

253253
Saremmo portati a pensare che la linea `(*)` causi un errore, ma non è così. Il valore di `user` è costante, si riferisce sempre allo stesso oggetto, ma le proprietà dell'oggetto sono libere di cambiare.
254254
255-
In altre parole, `const user` restituisce un errore solo se se proviamo a riassegnare del tutto `user=...`.
255+
In altre parole, `const user` restituisce un errore solo se se proviamo a riassegnare in toto `user=...`.
256256
257257
Detto questo, se vogliamo veramente rendere invariabili le proprietà di un oggetto, possiamo farlo, ma con un metodo totalmente differente. Ne parleremo nel capitolo <info:property-descriptors>.
258258
````

0 commit comments

Comments
 (0)