nozīme
Izplešanās operators (spread) ir trīs punkti (...) )。 Tas ir kā apgriezts atpūtas parametrs, pārvēršot masīvu par komatu atdalītu parametru secību.
Šis operators galvenokārt tiek izmantots funkciju izsaukumiem.
Iepriekš minētajā kodā array.push(...) priekšmeti) un pievienot(...) numuri), kas abi ir funkciju izsaukumi, un abi izmanto paplašinājumu operatorus. Šis operators pārvērš masīvu parametru secībā. Paplašinājuma operatorus var izmantot kombinācijā ar parastiem funkciju parametriem, kas ir ļoti elastīgi.
Lietot metodi alternatīviem masīviem
Tā kā paplašinājuma operators var paplašināt masīvu, nav nepieciešams izmantot lietošanas metodi, lai masīvu pārvērstu par funkcijas argumentu.
Šeit ir praktisks piemērs, kā paplašinājuma operators aizstāj lietošanas metodi, izmantojot Math.max metodi, lai vienkāršotu masīva lielākā elementa rakstīšanu.
Iepriekš minētais kods saka, ka, tā kā JavaScript nenodrošina funkciju, lai atrastu lielāko masīva elementu, jūs varat izmantot Math.max funkciju, lai pārvērstu masīvu parametru secībā un pēc tam atrastu maksimālo vērtību. Izmantojot paplašinājuma operatoru, varat izmantot Math.max tieši. Vēl viens piemērs ir masīva pievienošana cita masīva astei, izmantojot push funkciju.
Iepriekš minētā koda ES5 rakstīšanas metodē push metodes parametri nevar būt masīvi, tāpēc mums ir elastīgi jāizmanto push metode, izmantojot pielietošanas metodi. Izmantojot paplašinājuma operatoru, masīvu var nodot tieši stumšanas metodē. Šeit ir vēl viens piemērs.
Paplašināt operatoru piemērošanu
(1) Masīvu sapludināšana
Paplašinājuma operators nodrošina jaunu veidu, kā rakstīt skaitļu kombināciju.
(2) apvienojumā ar dekonstruētu uzdevumu
Paplašinājumu operatorus var apvienot ar dekonstruētiem uzdevumiem, lai ģenerētu masīvus.
Ja masīva piešķiršanai izmantojat paplašinājuma operatoru, to var novietot tikai parametra pēdējā ciparā, pretējā gadījumā tiks ziņots par kļūdu.
(3) Funkcijas atgrieztā vērtība
JavaScript funkcijas var atgriezt tikai vienu vērtību, un, ja jāatgriež vairākas vērtības, tikai masīvus vai objektus. Paplašinājumu operatori nodrošina risinājumu, lai atrisinātu šo problēmu.
Iepriekš minētais kods ņem datu rindu no datu bāzes, paplašina operatoru un nodod to tieši konstruktoram Date.
(4) Virkne
Paplašinājumu operatori var arī pārvērst virknes par reāliem masīviem.
Iepriekš minētajam rakstam ir svarīga priekšrocība, tas ir, tas var pareizi atpazīt 32 bitu Unicode rakstzīmes.
Pirmais veids, kā uzrakstīt iepriekš minēto kodu, JavaScript atpazīst 32 bitu unikoda rakstzīmes kā 2 rakstzīmes, un nav problēmu ar paplašinājumu operatoriem. Tātad funkciju, kas pareizi atgriež virknes garumu, var rakstīt šādi:
Tā ir problēma jebkurai funkcijai, kas saistīta ar manipulācijām ar 32 bitu unikoda rakstzīmēm. Tāpēc vislabāk tos visus pārrakstīt ar paplašinājuma operatoriem.
Iepriekš minētajā kodā, ja neizmantojat paplašinājuma operatoru, virknes apgrieztā darbība ir nepareiza.
(5) Objekti, kas īsteno iteratora interfeisu
Jebkuru objektu Iterator saskarnē var pārvērst par īstu masīvu ar paplašinājuma operatoru.
Iepriekš minētajā kodā metode querySelectorAll atgriež objektu nodeList. Tas nav masīvs, bet masīvam līdzīgs objekts. Šajā gadījumā paplašinājuma operators to var pārvērst par reālu masīvu, jo NodeList objekts īsteno Iterator interfeisu. Tiem masīviem līdzīgiem objektiem, kuriem nav izvietota iteratora saskarne, paplašinājuma operators nevar tos pārvērst par reālu masīvu.
Iepriekš minētajā kodā arrayLike ir masīvam līdzīgs objekts, bet, neizvietojot Iterator saskarni, paplašinājuma operators ziņos par kļūdu. Šajā gadījumā varat izmantot metodi Array.from, lai tā vietā pārvērstu arrayLike par reālu masīvu.
(6) Kartes un komplekta struktūras, ģeneratora funkcijas
Paplašinājuma operators iekšēji izsauc datu struktūras Iterator interfeisu, tāpēc jebkurš objekts ar Iterator interfeisu var izmantot paplašinājuma operatoru, piemēram, kartes struktūru.
Palaižot funkciju Generator, tā atgriež traversera objektu, tāpēc var izmantot arī paplašinājuma operatorus.
Iepriekš minētajā kodā mainīgais go ir ģeneratora funkcija, un pēc izpildes tas atgriež šķērsotāja objektu, un, izpildot paplašinājuma operatoru šajā šķērsošanas objektā, vērtības, kas iegūtas no iekšējās šķērsošanas, tiks pārvērstas masīvā. Ja izmantojat paplašinājuma operatoru objektam bez iteratora interfeisa, tiks ziņots par kļūdu.
|