Spread operator
Sa novim ES2015 standardom je došao novi operator “…” koji može da razdvoji niz u listu i obrnuto da grupiše listu u niz. U zavisnosti koju funkciju obavlja ovaj parametar ima naziv “spread” ili “rest”. Ukoliko se operator nalazi ispred iteratibilnog objekta i “širi” iterator (npr.niz) u pojedinačne vrednosti praveći listu, onda se naziva “spread”.
Transformacija niza u listu argumenata
Ovaj operator je zamena za često korišćen problem kada je potrebno niz prebaciti u listu argumenata. A najbolji primer je “širenje” niza u listu argumenata funkcije. Ovaj operator se koristi pri pozivanju funkcije:
function foo (a,b,c){
console.log(a);
console.log(b);
console.log(c);
}
argNiz = [1,2,3];
// Problem funkcija ne prihvata niz:
foo(argNiz); // Vraća: [1,2,3], undefined, undefined
// Stari način rešavanja problema:
foo.apply(null, argNiz); // Vraća: 1,2,3
// Novi pristup sa novom sintaksom
foo(...argNiz); // Vraća: 1,2,3
Deklaracije niza koji sadrži drugi niz
Koristi se u okviru deklaracije niza koji sadrži drugi niz:
var a = [2,3] var b = [1, ...a]; // [1,2,3]
Kloniranje objekta
Sa novim standardom je dozvoljeno korišećenje spread operatora u okviru object literala. Ova pogodnost nam omogućava da korišćenjem spread operatora jednostavno kloniramo objekte, bez korišćenja metode Object.assign():
var obj1 = { foo: 'bar', x: 42 };
var clonedObj = { ...obj1 }; // Vraca: { foo: 'bar', x: 42 }
Spajanje dva objekta
Korišećenjem spread operatora je olakšano spajanje dva objekta bez dupliranja svojstava:
var obj1 = { foo: 'bar', x: 42 };
var obj2 = { foo: 'baz', y: 13 };
var mergedObj = { ...obj1, ...obj2 }; // Vraća: { foo: "baz", x: 42, y: 13 }
