Tre punti utili: il resto e lo spread in JavaScript
Lukasz Kolko
ECMAScript 2015 ci ha portato molte novità, che si sono tradotte in un gran numero di miglioramenti. Oggi daremo un'occhiata più da vicino a due caratteristiche che rendono la vita più facile. Ecco i paremetri di riposo e la sintassi di diffusione.
La sintassi del resto ci permette di rappresentare un numero indefinito di argomenti come un array. Osserviamo una funzione che somma tutti gli argomenti passati.
L'operatore spread ci consente di espandere gli oggetti iterabili in singoli elementi. Questa funzionalità è opposta a quella ottenuta con i parametri restanti. Può essere applicato a tutte le iterabili, come array, oggetti, set, mappe, ecc.
const somma = (x, y, z) => x + y + z;
numeri costanti = [1, 2, 3];
console.log(somma(...numeri)); // 6
La sintassi di spread si spinge effettivamente a un livello superiore durante la copia di un array. Un livello significa che viene copiato il primo livello di riferimenti.
Si noti che la copia dell'oggetto che viene creata è un nuovo oggetto con tutte le proprietà dell'oggetto originale, ma nessuna delle sue informazioni prototipali.
Si noti che la sintassi diffusa crea una copia "superficiale" dell'oggetto, quindi la proprietà "portafoglio" sarà copiata solo come riferimento al sotto-oggetto originale. Per la clonazione profonda si può usare l'approccio JSON stringify/parse o il metodo 'cloneDeep' fornito da Lodash, a seconda della complessità dell'oggetto. In alcuni casi anche questo metodo può essere utile:
let personCopy = { ...persona, portafoglio = {...persona.portafoglio}};
Possiamo aggiungere in modo condizionato le proprietà a un nuovo oggetto che stiamo creando, utilizzando l'operatore di diffusione e la valutazione del cortocircuito.