jelentés
A bővítési operátor (spread) három pont (...) )。 Ez olyan, mint a pihenőparaméter inverse, amely egy tömböt vesszővel elválasztott paramétersorozattá alakít.
Ezt az operátort főként függvényhívásokhoz használják.
A fenti kódban array.push(...) tárgyak) és add(...) számok), amelyek mindkettő hívás funkciókra, és mindkettő kiterjesztő operátorokat használ. Ez az operátor egy tömböt paramétersorozattá alakít. A kiterjesztési operátorok normál függvényparaméterekkel kombinálhatók, ami nagyon rugalmas.
Alkalmazás módszer alternatív tömbökre
Mivel a kiterjesztési operátor képes kibővíteni a tömböt, nincs szükség az apply metódóra arra, hogy a tömböt a függvényhez argumentává alakítsuk.
Íme egy gyakorlati példa arra, hogyan helyettesíti egy kiterjesztő operátor az alkalmazás metódust, és Math.max módszert alkalmazva a tömb legnagyobb elemének írásának egyszerűsítésére.
A fenti kód azt mondja, hogy mivel a JavaScript nem biztosít függvényt a tömr legnagyobb elemének megtalálásához, csak Math.max függvényt alkalmazhatunk, hogy a tömböt paramétersorozattá alakítsuk, majd megtaláljuk a maximális értéket. A kiterjesztő operátorral közvetlenül használhatod Math.max. Egy másik példa, ha egy tömböt hozzáadunk egy tömb végéhez a push függvényen keresztül.
A fenti kód ES5 írásmódjában a push metódus paraméterei nem lehetnek tömbök, ezért a push metódust rugalmasan kell alkalmazni az apply metódon keresztül. A kiterjesztő operátorral a tömb közvetlenül átvihető a push módszerre. Itt egy másik példa.
Az operátorok alkalmazásának bővítése
(1) Tömbök összevonása
A kiterjesztési operátor új módot kínál a számok kombinációjának írására.
(2) dekonstrukciós hozzárendeléssel kombinálva
A kiterjesztési operátorokat dekonstrukciós hozzárendelésekkel kombinálhatjuk tömbök generálásához.
Ha a kiterjesztő operátort használod a tömbek hozzárendeléséhez, azt csak a paraméter utolsó számjegyéhez lehet helyezni, különben hibát jelentenek.
(3) A függvény visszatérési értéke
A JavaScript függvények csak egy értéket tudnak visszaadni, és ha több értéket is vissza kell adni, akkor csak tömböket vagy objektumokat adhatnak vissza. A kiterjesztő operátorok megoldást kínálnak ennek a problémának a megoldására.
A fenti kód egy adatsort vesz fel az adatbázisból, kiterjeszti az operátort, és közvetlenül továbbítja azt a konstruktor Date-nek.
(4) Húr
A kiterjesztési operátorok a sorozatokat valódi tömbökké is alakíthatnak.
A fenti írásnak fontos előnye, vagyis helyesen képes felismerni a 32 bites Unicode karaktereket.
A fenti kód első írásmódja, a JavaScript felismeri a 32 bites Unicode karaktereket 2 karakterként, és nincs probléma a kiterjesztési operátorokkal. Tehát az a függvény, amely helyesen adja vissza a string hosszát, így írható:
Ez a probléma bármely olyan függvény esetében, amely 32 bites Unicode karakterek manipulálását igényli. Ezért a legjobb, ha mindet kiterjesztő operátorokkal írjuk újra.
A fenti kódban, ha nem használod a kiterjesztő operátort, a string reverse művelet helytelen.
(5) Objektumok, amelyek megvalósítják az Iterátor interfészt
Bármely objektum az Iterator interfészben átalakítható valódi tömbbé egy kiterjesztési operátorral.
A fenti kódban a querySelectorAll metódus nodeList objektumot ad vissza. Ez nem egy tömb, hanem egy tömbszerű objektum. Ebben az esetben a kiterjesztési operátor valódi tömbzé alakíthatja, mert a NodeList objektum valósítja meg az Iterator interfészt. Azoknál a tömbszerű objektumoknál, amelyeknél nincs Iterator interfész, a kiterjesztési operátor nem tudja valódi tömbzé alakítani őket.
A fenti kódban a arrayLike egy tömbszerű objektum, de az Iterator interfész telepítése nélkül a kiterjesztési operátor hibát jelent. Ebben az esetben a Array.from metódusal a arrayLike valódi tömbbe konvertálhatod.
(6) Leképezési és halmazstruktúrák, generátorfüggvények
A kiterjesztő operátor belsőleg hívja az adatszerkezet Iterátor interfészét, így bármely objektum, amelynek Iterátor interfésze van, használhat kiterjesztési operátort, például egy térképstruktúrát.
Amikor a Generátor függvény fut, egy átjáró objektumot ad vissza, így kiterjesztő operátorok is használhatók.
A fenti kódban a Go változó egy Generátor függvény, és végrehajtás után egy átjáró objektumot ad vissza, és ha ezen a traversal objektumon egy kiterjesztési operátort hajtunk végre, a belső átjárásból származó értékeket tömbbe alakítja. Ha egy objektum számára kiterjesztés operátort használsz, amelyen nincs iterátor interfész, hibát jelentenek.
|